@doxajs/theoria 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/store.js ADDED
@@ -0,0 +1,164 @@
1
+ import { Pool } from 'pg';
2
+ export class TheoriaStore {
3
+ #pool;
4
+ constructor(connectionString) {
5
+ this.#pool = new Pool({ connectionString, application_name: 'doxa-theoria-ui' });
6
+ }
7
+ async executions(query = {}) {
8
+ const limit = Math.min(Math.max(query.limit ?? 100, 1), 500);
9
+ const values = [];
10
+ const conditions = ['candidate.execution_id IS NOT NULL'];
11
+ if (query.kind) {
12
+ values.push(query.kind);
13
+ conditions.push(`candidate.kind = $${values.length}`);
14
+ }
15
+ if (query.phase) {
16
+ values.push(query.phase);
17
+ conditions.push(`candidate.phase = $${values.length}`);
18
+ }
19
+ if (query.search) {
20
+ values.push(`%${query.search}%`);
21
+ conditions.push(`(candidate.name ILIKE $${values.length} OR candidate.role_id ILIKE $${values.length} OR candidate.actor_id ILIKE $${values.length} OR candidate.execution_id::text ILIKE $${values.length} OR candidate.correlation_id::text ILIKE $${values.length})`);
22
+ }
23
+ values.push(limit);
24
+ const result = await this.#pool.query(`
25
+ WITH eligible AS (
26
+ SELECT DISTINCT candidate.execution_id
27
+ FROM doxa_theoria_observations candidate
28
+ WHERE ${conditions.join(' AND ')}
29
+ ), ranked AS (
30
+ SELECT observation.execution_id, observation.correlation_id, observation.source_execution_id,
31
+ observation.name, observation.transport, observation.phase, observation.occurred_at,
32
+ observation.duration_ms,
33
+ count(*) OVER (PARTITION BY observation.execution_id) AS observation_count,
34
+ row_number() OVER (
35
+ PARTITION BY observation.execution_id
36
+ ORDER BY
37
+ CASE
38
+ WHEN observation.kind = 'execution' AND observation.phase IN ('completed', 'failed') THEN 0
39
+ WHEN observation.kind = 'execution' THEN 1
40
+ ELSE 2
41
+ END,
42
+ observation.sequence DESC NULLS LAST,
43
+ observation.occurred_at DESC,
44
+ observation.id DESC
45
+ ) AS position
46
+ FROM doxa_theoria_observations observation
47
+ JOIN eligible ON eligible.execution_id = observation.execution_id
48
+ )
49
+ SELECT execution_id, correlation_id, source_execution_id, name, transport, phase,
50
+ occurred_at, duration_ms, observation_count
51
+ FROM ranked WHERE position = 1
52
+ ORDER BY occurred_at DESC, execution_id
53
+ LIMIT $${values.length}
54
+ `, values);
55
+ return result.rows.map((row) => ({
56
+ executionId: row.execution_id,
57
+ ...(row.correlation_id ? { correlationId: row.correlation_id } : {}),
58
+ ...(row.source_execution_id ? { sourceExecutionId: row.source_execution_id } : {}),
59
+ name: row.name,
60
+ ...(row.transport ? { transport: row.transport } : {}),
61
+ phase: row.phase,
62
+ occurredAt: row.occurred_at.toISOString(),
63
+ ...(row.duration_ms === null ? {} : { durationMilliseconds: row.duration_ms }),
64
+ observationCount: Number(row.observation_count),
65
+ }));
66
+ }
67
+ async entries(query) {
68
+ const limit = Math.min(Math.max(query.limit ?? 100, 1), 500);
69
+ const values = [];
70
+ const conditions = ['execution_id IS NOT NULL', "phase IN ('occurred', 'completed', 'failed')"];
71
+ if (query.kind) {
72
+ values.push(query.kind);
73
+ conditions.push(`kind = $${values.length}`);
74
+ }
75
+ if (query.phase) {
76
+ values.push(query.phase);
77
+ conditions.push(`phase = $${values.length}`);
78
+ }
79
+ if (query.search) {
80
+ values.push(`%${query.search}%`);
81
+ conditions.push(`(name ILIKE $${values.length} OR role_id ILIKE $${values.length} OR actor_id ILIKE $${values.length} OR execution_id::text ILIKE $${values.length} OR correlation_id::text ILIKE $${values.length})`);
82
+ }
83
+ values.push(limit);
84
+ const result = await this.#pool.query(`
85
+ SELECT id, execution_id, correlation_id, source_execution_id, name, kind, role_id,
86
+ transport, phase, occurred_at, duration_ms
87
+ FROM doxa_theoria_observations
88
+ WHERE ${conditions.join(' AND ')}
89
+ ORDER BY occurred_at DESC, id DESC
90
+ LIMIT $${values.length}
91
+ `, values);
92
+ return result.rows.map((row) => ({
93
+ entryId: row.id,
94
+ executionId: row.execution_id,
95
+ ...(row.correlation_id ? { correlationId: row.correlation_id } : {}),
96
+ ...(row.source_execution_id ? { sourceExecutionId: row.source_execution_id } : {}),
97
+ name: row.name,
98
+ kind: row.kind,
99
+ ...(row.role_id ? { roleId: row.role_id } : {}),
100
+ ...(row.transport ? { transport: row.transport } : {}),
101
+ phase: row.phase,
102
+ occurredAt: row.occurred_at.toISOString(),
103
+ ...(row.duration_ms === null ? {} : { durationMilliseconds: row.duration_ms }),
104
+ }));
105
+ }
106
+ async timeline(executionId) {
107
+ const correlation = await this.#pool.query(`
108
+ SELECT correlation_id FROM doxa_theoria_observations
109
+ WHERE execution_id = $1 ORDER BY sequence NULLS LAST, occurred_at, id LIMIT 1
110
+ `, [executionId]);
111
+ const correlationId = correlation.rows[0]?.correlation_id;
112
+ const result = await this.#pool.query(`
113
+ SELECT * FROM doxa_theoria_observations
114
+ WHERE execution_id = $1 OR ($2::uuid IS NOT NULL AND correlation_id = $2::uuid)
115
+ ORDER BY sequence NULLS LAST, occurred_at, id
116
+ `, [executionId, correlationId ?? null]);
117
+ return result.rows.map(toObservation);
118
+ }
119
+ async close() {
120
+ await this.#pool.end();
121
+ }
122
+ }
123
+ function toObservation(row) {
124
+ const optional = (key) => row[key] === null || row[key] === undefined ? undefined : row[key];
125
+ return {
126
+ id: String(row.id),
127
+ occurredAt: row.occurred_at.toISOString(),
128
+ kind: row.kind,
129
+ name: String(row.name),
130
+ phase: row.phase,
131
+ ...(optional('role_id') ? { roleId: optional('role_id') } : {}),
132
+ ...(optional('duration_ms') === undefined
133
+ ? {}
134
+ : { durationMilliseconds: optional('duration_ms') }),
135
+ context: {
136
+ ...(optional('execution_id')
137
+ ? { executionId: optional('execution_id') }
138
+ : {}),
139
+ ...(optional('source_execution_id')
140
+ ? { sourceExecutionId: optional('source_execution_id') }
141
+ : {}),
142
+ ...(optional('correlation_id')
143
+ ? { correlationId: optional('correlation_id') }
144
+ : {}),
145
+ ...(optional('causation_id')
146
+ ? { causationId: optional('causation_id') }
147
+ : {}),
148
+ ...(optional('trace_id') ? { traceId: optional('trace_id') } : {}),
149
+ ...(optional('span_id') ? { spanId: optional('span_id') } : {}),
150
+ ...(optional('actor_kind')
151
+ ? { actorKind: optional('actor_kind') }
152
+ : {}),
153
+ ...(optional('actor_id') ? { actorId: optional('actor_id') } : {}),
154
+ ...(optional('tenant_id') ? { tenantId: optional('tenant_id') } : {}),
155
+ ...(optional('transport') ? { transport: optional('transport') } : {}),
156
+ ...(optional('transport_name')
157
+ ? { transportName: optional('transport_name') }
158
+ : {}),
159
+ },
160
+ attributes: row.attributes,
161
+ ...(row.error ? { error: row.error } : {}),
162
+ };
163
+ }
164
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ CREATE TABLE IF NOT EXISTS doxa_theoria_observations (
2
+ id uuid PRIMARY KEY,
3
+ occurred_at timestamptz NOT NULL,
4
+ kind text NOT NULL,
5
+ name text NOT NULL,
6
+ phase text NOT NULL,
7
+ role_id text,
8
+ duration_ms double precision,
9
+ execution_id uuid,
10
+ source_execution_id uuid,
11
+ correlation_id uuid,
12
+ causation_id text,
13
+ trace_id text,
14
+ span_id text,
15
+ actor_kind text,
16
+ actor_id text,
17
+ tenant_id text,
18
+ transport text,
19
+ transport_name text,
20
+ attributes jsonb NOT NULL DEFAULT '{}'::jsonb,
21
+ error jsonb
22
+ );
23
+
24
+ CREATE INDEX IF NOT EXISTS doxa_theoria_execution_idx
25
+ ON doxa_theoria_observations (execution_id, occurred_at, id);
26
+ CREATE INDEX IF NOT EXISTS doxa_theoria_correlation_idx
27
+ ON doxa_theoria_observations (correlation_id, occurred_at, id);
28
+ CREATE INDEX IF NOT EXISTS doxa_theoria_recent_idx
29
+ ON doxa_theoria_observations (occurred_at DESC, id);
30
+ CREATE INDEX IF NOT EXISTS doxa_theoria_kind_idx
31
+ ON doxa_theoria_observations (kind, occurred_at DESC);
32
+ CREATE INDEX IF NOT EXISTS doxa_theoria_failed_idx
33
+ ON doxa_theoria_observations (occurred_at DESC)
34
+ WHERE phase = 'failed';
@@ -0,0 +1,7 @@
1
+ ALTER TABLE doxa_theoria_observations
2
+ ADD COLUMN IF NOT EXISTS sequence bigint GENERATED ALWAYS AS IDENTITY;
3
+
4
+ CREATE INDEX IF NOT EXISTS doxa_theoria_execution_sequence_idx
5
+ ON doxa_theoria_observations (execution_id, sequence);
6
+ CREATE INDEX IF NOT EXISTS doxa_theoria_correlation_sequence_idx
7
+ ON doxa_theoria_observations (correlation_id, sequence);
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@doxajs/theoria",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "The first-party causal execution debugger for Doxa development.",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/div0ky/doxajs.git",
9
+ "directory": "packages/theoria"
10
+ },
11
+ "homepage": "https://github.com/div0ky/doxajs#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/div0ky/doxajs/issues"
14
+ },
15
+ "keywords": [
16
+ "doxa",
17
+ "framework",
18
+ "debugger",
19
+ "observability",
20
+ "postgresql"
21
+ ],
22
+ "type": "module",
23
+ "engines": {
24
+ "node": ">=24 <25"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public",
28
+ "provenance": true
29
+ },
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "default": "./dist/index.js"
34
+ }
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "migrations",
39
+ "NOTICE"
40
+ ],
41
+ "dependencies": {
42
+ "pg": "8.22.0",
43
+ "@doxajs/core": "0.1.0-alpha.1"
44
+ },
45
+ "devDependencies": {
46
+ "@types/pg": "8.20.0"
47
+ },
48
+ "scripts": {}
49
+ }