@promptowl/contextnest-community 1.5.0 → 1.7.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.
- package/CONFIGURATION.md +181 -123
- package/LICENSE.md +142 -142
- package/README.md +224 -211
- package/dist/adapter.postgres-YOODX2BI.js +71 -0
- package/dist/{chunk-EMOE53KX.js → chunk-43DOX4LH.js} +356 -267
- package/dist/{chunk-IWA2UDAT.js → chunk-MOXICJPD.js} +116 -90
- package/dist/{chunk-RMU3LOPH.js → chunk-QMLAXQES.js} +383 -69
- package/dist/chunk-SLTQACJW.js +8 -0
- package/dist/{chunk-HIH7I232.js → chunk-VD5QX2ZQ.js} +69 -53
- package/dist/index.js +1427 -976
- package/dist/migrations.postgres-3HMGLKOV.js +279 -0
- package/dist/{review-service-XNXHF6Q7.js → review-service-2FSKW425.js} +5 -4
- package/dist/{stewardship-service-P4M5UEJW.js → stewardship-service-I2JAFYJU.js} +3 -2
- package/dist/{version-service-REGL5CUT.js → version-service-FJWVTZKR.js} +3 -2
- package/dist/web3/assets/{hootie-C2ocYkn4.svg → hootie-_U3ECslt.svg} +8 -8
- package/dist/web3/assets/index-24dBhQSQ.css +1 -0
- package/dist/web3/assets/index-DpM8J4RN.js +889 -0
- package/dist/web3/index.html +14 -14
- package/package.json +152 -150
- package/dist/web3/assets/index-C2dfT3Et.css +0 -1
- package/dist/web3/assets/index-DEKnE-ty.js +0 -887
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
getDb
|
|
3
|
-
|
|
2
|
+
getDb,
|
|
3
|
+
insertOrReplace,
|
|
4
|
+
nowExpr
|
|
5
|
+
} from "./chunk-QMLAXQES.js";
|
|
4
6
|
|
|
5
7
|
// src/governance/version-service.ts
|
|
6
8
|
import { createHash } from "crypto";
|
|
@@ -11,21 +13,22 @@ var SYSTEM_AUTHOR_PREFIX = "system:auto-publish:";
|
|
|
11
13
|
function systemAuthor(email) {
|
|
12
14
|
return `${SYSTEM_AUTHOR_PREFIX}${email}`;
|
|
13
15
|
}
|
|
14
|
-
function createVersion(params) {
|
|
16
|
+
async function createVersion(params) {
|
|
15
17
|
const db = getDb();
|
|
16
18
|
const contentHash = hashContent(params.content);
|
|
17
|
-
db.
|
|
19
|
+
await db.run(
|
|
18
20
|
`INSERT INTO node_versions (nest_id, node_id, version, content_hash, author, status, change_note, tags_json)
|
|
19
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
|
|
22
|
+
[
|
|
23
|
+
params.nestId,
|
|
24
|
+
params.nodeId,
|
|
25
|
+
params.version,
|
|
26
|
+
contentHash,
|
|
27
|
+
params.author,
|
|
28
|
+
params.status,
|
|
29
|
+
params.changeNote || null,
|
|
30
|
+
params.tags ? JSON.stringify(params.tags) : null
|
|
31
|
+
]
|
|
29
32
|
);
|
|
30
33
|
return {
|
|
31
34
|
version: params.version,
|
|
@@ -36,53 +39,62 @@ function createVersion(params) {
|
|
|
36
39
|
status: params.status
|
|
37
40
|
};
|
|
38
41
|
}
|
|
39
|
-
function getVersions(nestId, nodeId) {
|
|
42
|
+
async function getVersions(nestId, nodeId) {
|
|
40
43
|
const db = getDb();
|
|
41
|
-
const rows = db.
|
|
42
|
-
"SELECT * FROM node_versions WHERE nest_id = ? AND node_id = ? ORDER BY version DESC"
|
|
43
|
-
|
|
44
|
+
const rows = await db.all(
|
|
45
|
+
"SELECT * FROM node_versions WHERE nest_id = ? AND node_id = ? ORDER BY version DESC",
|
|
46
|
+
[nestId, nodeId]
|
|
47
|
+
);
|
|
44
48
|
return rows.map(rowToVersion);
|
|
45
49
|
}
|
|
46
|
-
function getVersion(nestId, nodeId, version) {
|
|
50
|
+
async function getVersion(nestId, nodeId, version) {
|
|
47
51
|
const db = getDb();
|
|
48
|
-
const row = db.
|
|
49
|
-
"SELECT * FROM node_versions WHERE nest_id = ? AND node_id = ? AND version = ?"
|
|
50
|
-
|
|
52
|
+
const row = await db.get(
|
|
53
|
+
"SELECT * FROM node_versions WHERE nest_id = ? AND node_id = ? AND version = ?",
|
|
54
|
+
[nestId, nodeId, version]
|
|
55
|
+
);
|
|
51
56
|
return row ? rowToVersion(row) : null;
|
|
52
57
|
}
|
|
53
|
-
function getCurrentVersion(nestId, nodeId) {
|
|
58
|
+
async function getCurrentVersion(nestId, nodeId) {
|
|
54
59
|
const db = getDb();
|
|
55
|
-
const row = db.
|
|
60
|
+
const row = await db.get(
|
|
56
61
|
`SELECT MAX(version) as v FROM node_versions
|
|
57
62
|
WHERE nest_id = ? AND node_id = ?
|
|
58
|
-
AND author NOT LIKE
|
|
59
|
-
|
|
63
|
+
AND author NOT LIKE ?`,
|
|
64
|
+
[nestId, nodeId, `${SYSTEM_AUTHOR_PREFIX}%`]
|
|
65
|
+
);
|
|
60
66
|
return row?.v || 0;
|
|
61
67
|
}
|
|
62
|
-
function getApprovedVersion(nestId, nodeId) {
|
|
68
|
+
async function getApprovedVersion(nestId, nodeId) {
|
|
63
69
|
const db = getDb();
|
|
64
|
-
const row = db.
|
|
65
|
-
"SELECT approved_version FROM approved_versions WHERE nest_id = ? AND node_id = ?"
|
|
66
|
-
|
|
70
|
+
const row = await db.get(
|
|
71
|
+
"SELECT approved_version FROM approved_versions WHERE nest_id = ? AND node_id = ?",
|
|
72
|
+
[nestId, nodeId]
|
|
73
|
+
);
|
|
67
74
|
return row?.approved_version ?? null;
|
|
68
75
|
}
|
|
69
|
-
function setApprovedVersion(nestId, nodeId, version, approvedBy) {
|
|
76
|
+
async function setApprovedVersion(nestId, nodeId, version, approvedBy) {
|
|
70
77
|
const db = getDb();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
78
|
+
const sql = insertOrReplace(
|
|
79
|
+
db,
|
|
80
|
+
`INSERT INTO approved_versions (nest_id, node_id, approved_version, approved_by)
|
|
81
|
+
VALUES (?, ?, ?, ?)`,
|
|
82
|
+
["nest_id", "node_id"],
|
|
83
|
+
`approved_version = excluded.approved_version, approved_by = excluded.approved_by, approved_at = ${nowExpr(db)}`
|
|
84
|
+
);
|
|
85
|
+
await db.run(sql, [nestId, nodeId, version, approvedBy]);
|
|
75
86
|
}
|
|
76
|
-
function checkConflict(nestId, nodeId, baseVersion) {
|
|
87
|
+
async function checkConflict(nestId, nodeId, baseVersion) {
|
|
77
88
|
const db = getDb();
|
|
78
|
-
const current = db.
|
|
89
|
+
const current = await db.get(
|
|
79
90
|
`SELECT version, content_hash, author, created_at
|
|
80
91
|
FROM node_versions
|
|
81
92
|
WHERE nest_id = ? AND node_id = ?
|
|
82
93
|
AND author NOT LIKE ?
|
|
83
94
|
ORDER BY version DESC
|
|
84
|
-
LIMIT 1
|
|
85
|
-
|
|
95
|
+
LIMIT 1`,
|
|
96
|
+
[nestId, nodeId, `${SYSTEM_AUTHOR_PREFIX}%`]
|
|
97
|
+
);
|
|
86
98
|
if (!current) {
|
|
87
99
|
return { conflict: false, currentVersion: 0, currentHash: "" };
|
|
88
100
|
}
|
|
@@ -101,11 +113,12 @@ function checkConflict(nestId, nodeId, baseVersion) {
|
|
|
101
113
|
currentHash: current.content_hash
|
|
102
114
|
};
|
|
103
115
|
}
|
|
104
|
-
function getNodeTags(nestId, nodeId) {
|
|
116
|
+
async function getNodeTags(nestId, nodeId) {
|
|
105
117
|
const db = getDb();
|
|
106
|
-
const row = db.
|
|
107
|
-
"SELECT tags_json FROM node_versions WHERE nest_id = ? AND node_id = ? ORDER BY version DESC LIMIT 1"
|
|
108
|
-
|
|
118
|
+
const row = await db.get(
|
|
119
|
+
"SELECT tags_json FROM node_versions WHERE nest_id = ? AND node_id = ? ORDER BY version DESC LIMIT 1",
|
|
120
|
+
[nestId, nodeId]
|
|
121
|
+
);
|
|
109
122
|
if (!row?.tags_json) return [];
|
|
110
123
|
try {
|
|
111
124
|
return JSON.parse(row.tags_json);
|
|
@@ -113,22 +126,25 @@ function getNodeTags(nestId, nodeId) {
|
|
|
113
126
|
return [];
|
|
114
127
|
}
|
|
115
128
|
}
|
|
116
|
-
function getDisplayStatus(nestId, nodeId) {
|
|
129
|
+
async function getDisplayStatus(nestId, nodeId) {
|
|
117
130
|
const db = getDb();
|
|
118
|
-
const pending = db.
|
|
119
|
-
"SELECT 1 FROM review_requests WHERE nest_id = ? AND node_id = ? AND status = 'pending' LIMIT 1"
|
|
120
|
-
|
|
131
|
+
const pending = await db.get(
|
|
132
|
+
"SELECT 1 FROM review_requests WHERE nest_id = ? AND node_id = ? AND status = 'pending' LIMIT 1",
|
|
133
|
+
[nestId, nodeId]
|
|
134
|
+
);
|
|
121
135
|
if (pending) return "pending_review";
|
|
122
|
-
const current = db.
|
|
136
|
+
const current = await db.get(
|
|
123
137
|
`SELECT version, status FROM node_versions
|
|
124
138
|
WHERE nest_id = ? AND node_id = ?
|
|
125
|
-
ORDER BY version DESC LIMIT 1
|
|
126
|
-
|
|
139
|
+
ORDER BY version DESC LIMIT 1`,
|
|
140
|
+
[nestId, nodeId]
|
|
141
|
+
);
|
|
127
142
|
if (!current) return "draft";
|
|
128
143
|
if (current.status === "published" || current.status === "approved") {
|
|
129
|
-
const approved = db.
|
|
130
|
-
"SELECT approved_version FROM approved_versions WHERE nest_id = ? AND node_id = ?"
|
|
131
|
-
|
|
144
|
+
const approved = await db.get(
|
|
145
|
+
"SELECT approved_version FROM approved_versions WHERE nest_id = ? AND node_id = ?",
|
|
146
|
+
[nestId, nodeId]
|
|
147
|
+
);
|
|
132
148
|
if (approved?.approved_version === current.version) {
|
|
133
149
|
return current.status === "published" ? "published" : "approved";
|
|
134
150
|
}
|