@tomflow/proflow-task-store-sqlite 0.1.1 → 0.1.3
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/CONFIGURATION.md +23 -0
- package/dist/deployment/adapter.d.ts +275 -25
- package/dist/deployment/adapter.js +141 -18
- package/dist/deployment/descriptor.d.ts +6 -3
- package/dist/deployment/descriptor.js +18 -5
- package/package.json +5 -13
- package/proflow.module.json +7 -3
- package/CHANGELOG.md +0 -7
- package/self-install.mjs +0 -34
package/CONFIGURATION.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# task-store-sqlite configuration
|
|
2
|
+
|
|
3
|
+
Canonical public config: `.proflow/config/task-store-sqlite.json`
|
|
4
|
+
|
|
5
|
+
This file is Workspace-owned data. `platform uninstall` does not delete it. Values are JSON strings. Raw secrets must not be stored here; `secretRef` fields contain opaque references only.
|
|
6
|
+
|
|
7
|
+
## Fields
|
|
8
|
+
|
|
9
|
+
| Key | Type | Required | Sensitive | Source | Meaning |
|
|
10
|
+
|---|---|---:|---:|---|---|
|
|
11
|
+
| `databasePath` | `path` | yes | no | User or owning Module supplies an absolute/local path that exists on this Workspace. | Task SQLite database path |
|
|
12
|
+
|
|
13
|
+
## Materialize
|
|
14
|
+
|
|
15
|
+
Create or update the canonical JSON object at:
|
|
16
|
+
|
|
17
|
+
`.proflow/config/task-store-sqlite.json`
|
|
18
|
+
|
|
19
|
+
Use only declared keys and string values. Do not create a second Platform configuration database.
|
|
20
|
+
|
|
21
|
+
## Base completion check
|
|
22
|
+
|
|
23
|
+
Run `platform modules`. This Module should no longer report required keys in `missingConfig`. `platform start` performs the authoritative Module-owned validation before starting anything.
|
|
@@ -1,47 +1,297 @@
|
|
|
1
|
+
export declare function createBehaviorAdapter(config?: Record<string, string>): {
|
|
2
|
+
describe: () => {
|
|
3
|
+
result: {
|
|
4
|
+
contract: "deployment.result.v1";
|
|
5
|
+
ok: boolean;
|
|
6
|
+
status: "SUCCEEDED";
|
|
7
|
+
moduleRef: "task-store-sqlite";
|
|
8
|
+
moduleVersion: "0.1.3";
|
|
9
|
+
checks?: unknown[];
|
|
10
|
+
};
|
|
11
|
+
observedEffects: never[];
|
|
12
|
+
};
|
|
13
|
+
preflight: () => {
|
|
14
|
+
result: {
|
|
15
|
+
contract: "deployment.result.v1";
|
|
16
|
+
ok: boolean;
|
|
17
|
+
status: "SUCCEEDED";
|
|
18
|
+
moduleRef: "task-store-sqlite";
|
|
19
|
+
moduleVersion: "0.1.3";
|
|
20
|
+
checks?: unknown[];
|
|
21
|
+
} | {
|
|
22
|
+
contract: "deployment.result.v1";
|
|
23
|
+
ok: boolean;
|
|
24
|
+
status: "ACTION_REQUIRED";
|
|
25
|
+
moduleRef: "task-store-sqlite";
|
|
26
|
+
moduleVersion: "0.1.3";
|
|
27
|
+
actionRequired: {
|
|
28
|
+
action: string;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
checks?: unknown[];
|
|
32
|
+
} | {
|
|
33
|
+
contract: "deployment.result.v1";
|
|
34
|
+
ok: boolean;
|
|
35
|
+
status: "BLOCKED";
|
|
36
|
+
moduleRef: "task-store-sqlite";
|
|
37
|
+
moduleVersion: "0.1.3";
|
|
38
|
+
error: {
|
|
39
|
+
code: "VERIFY_FAILED";
|
|
40
|
+
message: string;
|
|
41
|
+
retryable: boolean;
|
|
42
|
+
};
|
|
43
|
+
checks?: unknown[];
|
|
44
|
+
};
|
|
45
|
+
observedEffects: never[];
|
|
46
|
+
};
|
|
47
|
+
status: () => {
|
|
48
|
+
result: {
|
|
49
|
+
contract: "deployment.result.v1";
|
|
50
|
+
ok: boolean;
|
|
51
|
+
status: "SUCCEEDED";
|
|
52
|
+
moduleRef: "task-store-sqlite";
|
|
53
|
+
moduleVersion: "0.1.3";
|
|
54
|
+
checks?: unknown[];
|
|
55
|
+
data: {
|
|
56
|
+
configStatus: "INCOMPLETE";
|
|
57
|
+
missingConfig: string[];
|
|
58
|
+
runtimeStatus: "UNKNOWN";
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
observedEffects: never[];
|
|
62
|
+
} | {
|
|
63
|
+
result: {
|
|
64
|
+
contract: "deployment.result.v1";
|
|
65
|
+
ok: boolean;
|
|
66
|
+
status: "SUCCEEDED";
|
|
67
|
+
moduleRef: "task-store-sqlite";
|
|
68
|
+
moduleVersion: "0.1.3";
|
|
69
|
+
checks?: unknown[];
|
|
70
|
+
data: {
|
|
71
|
+
missingConfig?: never;
|
|
72
|
+
configStatus: "INVALID" | "READY";
|
|
73
|
+
runtimeStatus: "UNKNOWN";
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
observedEffects: never[];
|
|
77
|
+
};
|
|
78
|
+
verify: () => {
|
|
79
|
+
result: {
|
|
80
|
+
contract: "deployment.result.v1";
|
|
81
|
+
ok: boolean;
|
|
82
|
+
status: "SUCCEEDED";
|
|
83
|
+
moduleRef: "task-store-sqlite";
|
|
84
|
+
moduleVersion: "0.1.3";
|
|
85
|
+
checks?: unknown[];
|
|
86
|
+
} | {
|
|
87
|
+
contract: "deployment.result.v1";
|
|
88
|
+
ok: boolean;
|
|
89
|
+
status: "ACTION_REQUIRED";
|
|
90
|
+
moduleRef: "task-store-sqlite";
|
|
91
|
+
moduleVersion: "0.1.3";
|
|
92
|
+
actionRequired: {
|
|
93
|
+
action: string;
|
|
94
|
+
description: string;
|
|
95
|
+
};
|
|
96
|
+
checks?: unknown[];
|
|
97
|
+
} | {
|
|
98
|
+
contract: "deployment.result.v1";
|
|
99
|
+
ok: boolean;
|
|
100
|
+
status: "BLOCKED";
|
|
101
|
+
moduleRef: "task-store-sqlite";
|
|
102
|
+
moduleVersion: "0.1.3";
|
|
103
|
+
error: {
|
|
104
|
+
code: "VERIFY_FAILED";
|
|
105
|
+
message: string;
|
|
106
|
+
retryable: boolean;
|
|
107
|
+
};
|
|
108
|
+
checks?: unknown[];
|
|
109
|
+
};
|
|
110
|
+
observedEffects: never[];
|
|
111
|
+
};
|
|
112
|
+
doctor: () => {
|
|
113
|
+
result: {
|
|
114
|
+
contract: "deployment.result.v1";
|
|
115
|
+
ok: boolean;
|
|
116
|
+
status: "SUCCEEDED";
|
|
117
|
+
moduleRef: "task-store-sqlite";
|
|
118
|
+
moduleVersion: "0.1.3";
|
|
119
|
+
checks?: unknown[];
|
|
120
|
+
} | {
|
|
121
|
+
contract: "deployment.result.v1";
|
|
122
|
+
ok: boolean;
|
|
123
|
+
status: "ACTION_REQUIRED";
|
|
124
|
+
moduleRef: "task-store-sqlite";
|
|
125
|
+
moduleVersion: "0.1.3";
|
|
126
|
+
actionRequired: {
|
|
127
|
+
action: string;
|
|
128
|
+
description: string;
|
|
129
|
+
};
|
|
130
|
+
checks?: unknown[];
|
|
131
|
+
} | {
|
|
132
|
+
contract: "deployment.result.v1";
|
|
133
|
+
ok: boolean;
|
|
134
|
+
status: "BLOCKED";
|
|
135
|
+
moduleRef: "task-store-sqlite";
|
|
136
|
+
moduleVersion: "0.1.3";
|
|
137
|
+
error: {
|
|
138
|
+
code: "VERIFY_FAILED";
|
|
139
|
+
message: string;
|
|
140
|
+
retryable: boolean;
|
|
141
|
+
};
|
|
142
|
+
checks?: unknown[];
|
|
143
|
+
};
|
|
144
|
+
observedEffects: never[];
|
|
145
|
+
};
|
|
146
|
+
};
|
|
1
147
|
export declare const behaviorAdapter: {
|
|
2
|
-
|
|
148
|
+
describe: () => {
|
|
3
149
|
result: {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
150
|
+
contract: "deployment.result.v1";
|
|
151
|
+
ok: boolean;
|
|
152
|
+
status: "SUCCEEDED";
|
|
153
|
+
moduleRef: "task-store-sqlite";
|
|
154
|
+
moduleVersion: "0.1.3";
|
|
155
|
+
checks?: unknown[];
|
|
9
156
|
};
|
|
10
157
|
observedEffects: never[];
|
|
11
158
|
};
|
|
12
|
-
|
|
159
|
+
preflight: () => {
|
|
13
160
|
result: {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
161
|
+
contract: "deployment.result.v1";
|
|
162
|
+
ok: boolean;
|
|
163
|
+
status: "SUCCEEDED";
|
|
164
|
+
moduleRef: "task-store-sqlite";
|
|
165
|
+
moduleVersion: "0.1.3";
|
|
166
|
+
checks?: unknown[];
|
|
167
|
+
} | {
|
|
168
|
+
contract: "deployment.result.v1";
|
|
169
|
+
ok: boolean;
|
|
170
|
+
status: "ACTION_REQUIRED";
|
|
171
|
+
moduleRef: "task-store-sqlite";
|
|
172
|
+
moduleVersion: "0.1.3";
|
|
173
|
+
actionRequired: {
|
|
174
|
+
action: string;
|
|
175
|
+
description: string;
|
|
176
|
+
};
|
|
177
|
+
checks?: unknown[];
|
|
178
|
+
} | {
|
|
179
|
+
contract: "deployment.result.v1";
|
|
180
|
+
ok: boolean;
|
|
181
|
+
status: "BLOCKED";
|
|
182
|
+
moduleRef: "task-store-sqlite";
|
|
183
|
+
moduleVersion: "0.1.3";
|
|
184
|
+
error: {
|
|
185
|
+
code: "VERIFY_FAILED";
|
|
186
|
+
message: string;
|
|
187
|
+
retryable: boolean;
|
|
188
|
+
};
|
|
189
|
+
checks?: unknown[];
|
|
19
190
|
};
|
|
20
191
|
observedEffects: never[];
|
|
21
192
|
};
|
|
22
|
-
|
|
193
|
+
status: () => {
|
|
23
194
|
result: {
|
|
24
195
|
contract: "deployment.result.v1";
|
|
25
|
-
ok:
|
|
196
|
+
ok: boolean;
|
|
26
197
|
status: "SUCCEEDED";
|
|
27
198
|
moduleRef: "task-store-sqlite";
|
|
28
|
-
moduleVersion: "0.1.
|
|
29
|
-
checks
|
|
30
|
-
|
|
31
|
-
|
|
199
|
+
moduleVersion: "0.1.3";
|
|
200
|
+
checks?: unknown[];
|
|
201
|
+
data: {
|
|
202
|
+
configStatus: "INCOMPLETE";
|
|
203
|
+
missingConfig: string[];
|
|
204
|
+
runtimeStatus: "UNKNOWN";
|
|
205
|
+
};
|
|
206
|
+
};
|
|
207
|
+
observedEffects: never[];
|
|
208
|
+
} | {
|
|
209
|
+
result: {
|
|
210
|
+
contract: "deployment.result.v1";
|
|
211
|
+
ok: boolean;
|
|
212
|
+
status: "SUCCEEDED";
|
|
213
|
+
moduleRef: "task-store-sqlite";
|
|
214
|
+
moduleVersion: "0.1.3";
|
|
215
|
+
checks?: unknown[];
|
|
216
|
+
data: {
|
|
217
|
+
missingConfig?: never;
|
|
218
|
+
configStatus: "INVALID" | "READY";
|
|
219
|
+
runtimeStatus: "UNKNOWN";
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
observedEffects: never[];
|
|
223
|
+
};
|
|
224
|
+
verify: () => {
|
|
225
|
+
result: {
|
|
226
|
+
contract: "deployment.result.v1";
|
|
227
|
+
ok: boolean;
|
|
228
|
+
status: "SUCCEEDED";
|
|
229
|
+
moduleRef: "task-store-sqlite";
|
|
230
|
+
moduleVersion: "0.1.3";
|
|
231
|
+
checks?: unknown[];
|
|
232
|
+
} | {
|
|
233
|
+
contract: "deployment.result.v1";
|
|
234
|
+
ok: boolean;
|
|
235
|
+
status: "ACTION_REQUIRED";
|
|
236
|
+
moduleRef: "task-store-sqlite";
|
|
237
|
+
moduleVersion: "0.1.3";
|
|
238
|
+
actionRequired: {
|
|
239
|
+
action: string;
|
|
240
|
+
description: string;
|
|
241
|
+
};
|
|
242
|
+
checks?: unknown[];
|
|
243
|
+
} | {
|
|
244
|
+
contract: "deployment.result.v1";
|
|
245
|
+
ok: boolean;
|
|
246
|
+
status: "BLOCKED";
|
|
247
|
+
moduleRef: "task-store-sqlite";
|
|
248
|
+
moduleVersion: "0.1.3";
|
|
249
|
+
error: {
|
|
250
|
+
code: "VERIFY_FAILED";
|
|
32
251
|
message: string;
|
|
33
|
-
|
|
252
|
+
retryable: boolean;
|
|
253
|
+
};
|
|
254
|
+
checks?: unknown[];
|
|
34
255
|
};
|
|
35
256
|
observedEffects: never[];
|
|
36
257
|
};
|
|
37
|
-
|
|
258
|
+
doctor: () => {
|
|
38
259
|
result: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
260
|
+
contract: "deployment.result.v1";
|
|
261
|
+
ok: boolean;
|
|
262
|
+
status: "SUCCEEDED";
|
|
263
|
+
moduleRef: "task-store-sqlite";
|
|
264
|
+
moduleVersion: "0.1.3";
|
|
265
|
+
checks?: unknown[];
|
|
266
|
+
} | {
|
|
267
|
+
contract: "deployment.result.v1";
|
|
268
|
+
ok: boolean;
|
|
269
|
+
status: "ACTION_REQUIRED";
|
|
270
|
+
moduleRef: "task-store-sqlite";
|
|
271
|
+
moduleVersion: "0.1.3";
|
|
272
|
+
actionRequired: {
|
|
273
|
+
action: string;
|
|
274
|
+
description: string;
|
|
275
|
+
};
|
|
276
|
+
checks?: unknown[];
|
|
277
|
+
} | {
|
|
278
|
+
contract: "deployment.result.v1";
|
|
279
|
+
ok: boolean;
|
|
280
|
+
status: "BLOCKED";
|
|
281
|
+
moduleRef: "task-store-sqlite";
|
|
282
|
+
moduleVersion: "0.1.3";
|
|
283
|
+
error: {
|
|
284
|
+
code: "VERIFY_FAILED";
|
|
285
|
+
message: string;
|
|
286
|
+
retryable: boolean;
|
|
287
|
+
};
|
|
288
|
+
checks?: unknown[];
|
|
44
289
|
};
|
|
45
290
|
observedEffects: never[];
|
|
46
291
|
};
|
|
47
292
|
};
|
|
293
|
+
export declare function createProductionBinding(input: {
|
|
294
|
+
config: Record<string, string>;
|
|
295
|
+
}): {
|
|
296
|
+
behaviorAdapter: Record<string, unknown>;
|
|
297
|
+
};
|
|
@@ -1,26 +1,149 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { DatabaseSync } from "node:sqlite";
|
|
1
3
|
import { descriptor } from "./descriptor.js";
|
|
2
|
-
const
|
|
4
|
+
const REQUIRED_TABLES = [
|
|
5
|
+
"schema_migrations",
|
|
6
|
+
"task_groups",
|
|
7
|
+
"tasks",
|
|
8
|
+
"nodes",
|
|
9
|
+
"task_role_bindings",
|
|
10
|
+
"node_execution_history",
|
|
11
|
+
"task_documents",
|
|
12
|
+
"task_messages",
|
|
13
|
+
"task_events",
|
|
14
|
+
"idempotency_records",
|
|
15
|
+
];
|
|
16
|
+
const success = (checks) => ({
|
|
3
17
|
contract: "deployment.result.v1",
|
|
4
18
|
ok: true,
|
|
5
19
|
status: "SUCCEEDED",
|
|
6
20
|
moduleRef: descriptor.moduleRef,
|
|
7
21
|
moduleVersion: descriptor.moduleVersion,
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
...(checks === undefined ? {} : { checks }),
|
|
23
|
+
});
|
|
24
|
+
const actionRequired = (description, checks) => ({
|
|
25
|
+
contract: "deployment.result.v1",
|
|
26
|
+
ok: false,
|
|
27
|
+
status: "ACTION_REQUIRED",
|
|
28
|
+
moduleRef: descriptor.moduleRef,
|
|
29
|
+
moduleVersion: descriptor.moduleVersion,
|
|
30
|
+
actionRequired: { action: "configure-task-store", description },
|
|
31
|
+
...(checks === undefined ? {} : { checks }),
|
|
32
|
+
});
|
|
33
|
+
const blocked = (message, checks) => ({
|
|
34
|
+
contract: "deployment.result.v1",
|
|
35
|
+
ok: false,
|
|
36
|
+
status: "BLOCKED",
|
|
37
|
+
moduleRef: descriptor.moduleRef,
|
|
38
|
+
moduleVersion: descriptor.moduleVersion,
|
|
39
|
+
error: { code: "VERIFY_FAILED", message, retryable: true },
|
|
40
|
+
...(checks === undefined ? {} : { checks }),
|
|
41
|
+
});
|
|
42
|
+
function inspect(databasePath) {
|
|
43
|
+
if (!databasePath)
|
|
44
|
+
return { ok: false, message: "databasePath is required" };
|
|
45
|
+
if (!existsSync(databasePath)) {
|
|
46
|
+
return {
|
|
47
|
+
ok: false,
|
|
48
|
+
message: `Task SQLite database does not exist at ${databasePath}`,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
let database;
|
|
52
|
+
try {
|
|
53
|
+
database = new DatabaseSync(databasePath, { readOnly: true });
|
|
54
|
+
const integrity = database.prepare("PRAGMA integrity_check").get();
|
|
55
|
+
const tables = new Set(database
|
|
56
|
+
.prepare("SELECT name FROM sqlite_master WHERE type='table'")
|
|
57
|
+
.all().map((row) => row.name));
|
|
58
|
+
const missing = REQUIRED_TABLES.filter((table) => !tables.has(table));
|
|
59
|
+
if (integrity?.integrity_check !== "ok") {
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
message: `SQLite integrity_check returned ${integrity?.integrity_check ?? "unknown"}`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (missing.length > 0) {
|
|
66
|
+
return {
|
|
67
|
+
ok: false,
|
|
68
|
+
message: `Task SQLite schema is missing tables: ${missing.join(", ")}`,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
ok: true,
|
|
73
|
+
message: "Task SQLite schema is present and integrity_check is ok",
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
return {
|
|
78
|
+
ok: false,
|
|
79
|
+
message: error instanceof Error
|
|
80
|
+
? error.message
|
|
81
|
+
: "Task SQLite reality could not be read",
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
database?.close();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function createBehaviorAdapter(config = {}) {
|
|
89
|
+
const resultForReality = (reality, checks) => reality.ok
|
|
90
|
+
? success(checks)
|
|
91
|
+
: config.databasePath
|
|
92
|
+
? blocked(reality.message, checks)
|
|
93
|
+
: actionRequired(reality.message, checks);
|
|
94
|
+
return {
|
|
95
|
+
describe: () => ({ result: success(), observedEffects: [] }),
|
|
96
|
+
preflight: () => {
|
|
97
|
+
const reality = inspect(config.databasePath);
|
|
98
|
+
return { result: resultForReality(reality), observedEffects: [] };
|
|
99
|
+
},
|
|
100
|
+
status: () => {
|
|
101
|
+
if (!config.databasePath) {
|
|
102
|
+
return {
|
|
103
|
+
result: {
|
|
104
|
+
...success(),
|
|
105
|
+
data: {
|
|
106
|
+
configStatus: "INCOMPLETE",
|
|
107
|
+
missingConfig: ["databasePath"],
|
|
108
|
+
runtimeStatus: "UNKNOWN",
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
observedEffects: [],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const reality = inspect(config.databasePath);
|
|
115
|
+
return {
|
|
116
|
+
result: {
|
|
117
|
+
...success(),
|
|
118
|
+
data: {
|
|
119
|
+
configStatus: reality.ok
|
|
120
|
+
? "READY"
|
|
121
|
+
: "INVALID",
|
|
122
|
+
runtimeStatus: "UNKNOWN",
|
|
123
|
+
},
|
|
20
124
|
},
|
|
21
|
-
|
|
125
|
+
observedEffects: [],
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
verify: () => {
|
|
129
|
+
const reality = inspect(config.databasePath);
|
|
130
|
+
const check = {
|
|
131
|
+
id: "sqlite-integrity-pass",
|
|
132
|
+
status: reality.ok ? "PASS" : "FAIL",
|
|
133
|
+
message: reality.message,
|
|
134
|
+
};
|
|
135
|
+
return {
|
|
136
|
+
result: resultForReality(reality, [check]),
|
|
137
|
+
observedEffects: [],
|
|
138
|
+
};
|
|
139
|
+
},
|
|
140
|
+
doctor: () => {
|
|
141
|
+
const reality = inspect(config.databasePath);
|
|
142
|
+
return { result: resultForReality(reality), observedEffects: [] };
|
|
22
143
|
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export const behaviorAdapter = createBehaviorAdapter();
|
|
147
|
+
export function createProductionBinding(input) {
|
|
148
|
+
return { behaviorAdapter: createBehaviorAdapter(input.config) };
|
|
149
|
+
}
|
|
@@ -3,11 +3,10 @@ export declare const descriptor: {
|
|
|
3
3
|
readonly contractVersion: "1.0.0";
|
|
4
4
|
readonly moduleRef: "task-store-sqlite";
|
|
5
5
|
readonly packageName: "@tomflow/proflow-task-store-sqlite";
|
|
6
|
-
readonly moduleVersion: "0.1.
|
|
6
|
+
readonly moduleVersion: "0.1.3";
|
|
7
7
|
readonly kind: "library";
|
|
8
8
|
readonly templateVersion: "1.0.0";
|
|
9
9
|
readonly platformCompatibility: ">=1.0.0 <2.0.0";
|
|
10
|
-
readonly installClass: "core";
|
|
11
10
|
readonly identity: {
|
|
12
11
|
readonly domain: "task-orchestration";
|
|
13
12
|
readonly summary: "Provides the node:sqlite store and repository adapters for Task-owned structured facts.";
|
|
@@ -29,7 +28,7 @@ export declare const descriptor: {
|
|
|
29
28
|
readonly description: "Task SQLite database path";
|
|
30
29
|
}];
|
|
31
30
|
readonly lifecycle: {
|
|
32
|
-
readonly supported: readonly ["describe", "preflight", "verify", "doctor"];
|
|
31
|
+
readonly supported: readonly ["describe", "preflight", "status", "verify", "doctor"];
|
|
33
32
|
};
|
|
34
33
|
readonly verification: {
|
|
35
34
|
readonly checks: readonly [{
|
|
@@ -47,5 +46,9 @@ export declare const descriptor: {
|
|
|
47
46
|
readonly id: "overview";
|
|
48
47
|
readonly path: "./README.md";
|
|
49
48
|
readonly description: "Package-owned module overview";
|
|
49
|
+
}, {
|
|
50
|
+
readonly id: "configuration";
|
|
51
|
+
readonly path: "./CONFIGURATION.md";
|
|
52
|
+
readonly description: "Module configuration fields, sources and materialization instructions";
|
|
50
53
|
}];
|
|
51
54
|
};
|
|
@@ -3,21 +3,27 @@ export const descriptor = {
|
|
|
3
3
|
contractVersion: "1.0.0",
|
|
4
4
|
moduleRef: "task-store-sqlite",
|
|
5
5
|
packageName: "@tomflow/proflow-task-store-sqlite",
|
|
6
|
-
moduleVersion: "0.1.
|
|
6
|
+
moduleVersion: "0.1.3",
|
|
7
7
|
kind: "library",
|
|
8
8
|
templateVersion: "1.0.0",
|
|
9
9
|
platformCompatibility: ">=1.0.0 <2.0.0",
|
|
10
|
-
installClass: "core",
|
|
11
10
|
identity: {
|
|
12
11
|
domain: "task-orchestration",
|
|
13
12
|
summary: "Provides the node:sqlite store and repository adapters for Task-owned structured facts.",
|
|
14
13
|
},
|
|
15
14
|
provides: [],
|
|
16
15
|
requires: [
|
|
17
|
-
{
|
|
16
|
+
{
|
|
17
|
+
contractRef: "task-orchestration",
|
|
18
|
+
versionRange: ">=1.0.0 <2.0.0",
|
|
19
|
+
},
|
|
18
20
|
],
|
|
19
21
|
requirements: [
|
|
20
|
-
{
|
|
22
|
+
{
|
|
23
|
+
kind: "runtime",
|
|
24
|
+
runtime: "node",
|
|
25
|
+
versionRange: ">=24.19.0",
|
|
26
|
+
},
|
|
21
27
|
],
|
|
22
28
|
configSlots: [
|
|
23
29
|
{
|
|
@@ -27,7 +33,9 @@ export const descriptor = {
|
|
|
27
33
|
description: "Task SQLite database path",
|
|
28
34
|
},
|
|
29
35
|
],
|
|
30
|
-
lifecycle: {
|
|
36
|
+
lifecycle: {
|
|
37
|
+
supported: ["describe", "preflight", "status", "verify", "doctor"],
|
|
38
|
+
},
|
|
31
39
|
verification: {
|
|
32
40
|
checks: [
|
|
33
41
|
{
|
|
@@ -50,5 +58,10 @@ export const descriptor = {
|
|
|
50
58
|
path: "./README.md",
|
|
51
59
|
description: "Package-owned module overview",
|
|
52
60
|
},
|
|
61
|
+
{
|
|
62
|
+
id: "configuration",
|
|
63
|
+
path: "./CONFIGURATION.md",
|
|
64
|
+
description: "Module configuration fields, sources and materialization instructions",
|
|
65
|
+
},
|
|
53
66
|
],
|
|
54
67
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tomflow/proflow-task-store-sqlite",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
"proflow.module.json",
|
|
17
17
|
"conformance.json",
|
|
18
18
|
"README.md",
|
|
19
|
-
"
|
|
19
|
+
"CONFIGURATION.md"
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@tomflow/proflow-
|
|
23
|
-
"@tomflow/proflow-
|
|
22
|
+
"@tomflow/proflow-task-orchestration": "^0.1.2",
|
|
23
|
+
"@tomflow/proflow-module-contract": "^0.1.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@tomflow/proflow-task-migration-runner": "^0.1.
|
|
26
|
+
"@tomflow/proflow-task-migration-runner": "^0.1.3"
|
|
27
27
|
},
|
|
28
28
|
"description": "Provides the node:sqlite store and repository adapters for Task-owned structured facts.",
|
|
29
29
|
"keywords": [
|
|
@@ -33,17 +33,9 @@
|
|
|
33
33
|
],
|
|
34
34
|
"proflow": {
|
|
35
35
|
"module": true,
|
|
36
|
-
"installClass": "core",
|
|
37
|
-
"installRequires": [
|
|
38
|
-
"@tomflow/proflow-module-contract",
|
|
39
|
-
"@tomflow/proflow-task-orchestration"
|
|
40
|
-
],
|
|
41
36
|
"descriptor": "./dist/deployment/descriptor.js",
|
|
42
37
|
"manifest": "./proflow.module.json"
|
|
43
38
|
},
|
|
44
|
-
"bin": {
|
|
45
|
-
"proflow-task-store-sqlite": "./self-install.mjs"
|
|
46
|
-
},
|
|
47
39
|
"scripts": {
|
|
48
40
|
"test": "node --test tests/**/*.test.ts",
|
|
49
41
|
"typecheck": "tsc --noEmit"
|
package/proflow.module.json
CHANGED
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
"contractVersion": "1.0.0",
|
|
4
4
|
"moduleRef": "task-store-sqlite",
|
|
5
5
|
"packageName": "@tomflow/proflow-task-store-sqlite",
|
|
6
|
-
"moduleVersion": "0.1.
|
|
6
|
+
"moduleVersion": "0.1.3",
|
|
7
7
|
"kind": "library",
|
|
8
8
|
"templateVersion": "1.0.0",
|
|
9
9
|
"platformCompatibility": ">=1.0.0 <2.0.0",
|
|
10
|
-
"installClass": "core",
|
|
11
10
|
"identity": {
|
|
12
11
|
"domain": "task-orchestration",
|
|
13
12
|
"summary": "Provides the node:sqlite store and repository adapters for Task-owned structured facts."
|
|
@@ -35,7 +34,7 @@
|
|
|
35
34
|
}
|
|
36
35
|
],
|
|
37
36
|
"lifecycle": {
|
|
38
|
-
"supported": ["describe", "preflight", "verify", "doctor"]
|
|
37
|
+
"supported": ["describe", "preflight", "status", "verify", "doctor"]
|
|
39
38
|
},
|
|
40
39
|
"verification": {
|
|
41
40
|
"checks": [
|
|
@@ -58,6 +57,11 @@
|
|
|
58
57
|
"id": "overview",
|
|
59
58
|
"path": "./README.md",
|
|
60
59
|
"description": "Package-owned module overview"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "configuration",
|
|
63
|
+
"path": "./CONFIGURATION.md",
|
|
64
|
+
"description": "Module configuration fields, sources and materialization instructions"
|
|
61
65
|
}
|
|
62
66
|
]
|
|
63
67
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# @tomflow/proflow-task-store-sqlite
|
|
2
|
-
|
|
3
|
-
## 0.1.1
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Close the Real-1 global Platform control-plane contract across every published ProFlow package. Platform CLI now owns one durable global Workspace binding with canonical identity, cross-process operation locking, cwd/`--workspace` install targeting, cross-directory instance commands, whole-instance uninstall/rebind, and deterministic npm/yarn/pnpm Workspace package-manager selection. Every package-owned install entry, including newly generated Module Template packages, delegates to the Shell-global `platform` command and fails closed when that global CLI is unavailable; Deployment Conformance and the formal test plans mechanically enforce the same rule across all 24 packages.
|
package/self-install.mjs
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { spawnSync } from "node:child_process";
|
|
3
|
-
|
|
4
|
-
const [command, ...rest] = process.argv.slice(2);
|
|
5
|
-
const usage = "Usage: npx @tomflow/proflow-task-store-sqlite install\n";
|
|
6
|
-
if (command === "--help" || command === "-h") {
|
|
7
|
-
process.stdout.write(usage);
|
|
8
|
-
process.exit(0);
|
|
9
|
-
}
|
|
10
|
-
if (command !== "install" || rest.length > 0) {
|
|
11
|
-
process.stderr.write(usage);
|
|
12
|
-
process.exit(2);
|
|
13
|
-
}
|
|
14
|
-
const executable = process.platform === "win32" ? "platform.cmd" : "platform";
|
|
15
|
-
const result = spawnSync(
|
|
16
|
-
executable,
|
|
17
|
-
[
|
|
18
|
-
"install",
|
|
19
|
-
"@tomflow/proflow-task-store-sqlite",
|
|
20
|
-
"--workspace",
|
|
21
|
-
process.cwd(),
|
|
22
|
-
],
|
|
23
|
-
{ cwd: process.cwd(), env: process.env, stdio: "inherit" },
|
|
24
|
-
);
|
|
25
|
-
if (result.error) {
|
|
26
|
-
if (result.error.code === "ENOENT") {
|
|
27
|
-
process.stderr.write(
|
|
28
|
-
"GLOBAL_PLATFORM_CLI_REQUIRED: install @tomflow/proflow-platform-cli globally before package-owned install\n",
|
|
29
|
-
);
|
|
30
|
-
process.exit(127);
|
|
31
|
-
}
|
|
32
|
-
throw result.error;
|
|
33
|
-
}
|
|
34
|
-
process.exit(result.status ?? 1);
|