@hasna/prompts 0.1.0 → 0.2.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/README.md +31 -31
- package/dist/cli/index.js +272 -35
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/prompts.d.ts +3 -1
- package/dist/db/prompts.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +78 -18
- package/dist/lib/duplicates.d.ts +7 -0
- package/dist/lib/duplicates.d.ts.map +1 -0
- package/dist/lib/ids.d.ts.map +1 -1
- package/dist/lib/lint.d.ts +16 -0
- package/dist/lib/lint.d.ts.map +1 -0
- package/dist/lib/mementos.d.ts +13 -0
- package/dist/lib/mementos.d.ts.map +1 -0
- package/dist/lib/search.d.ts.map +1 -1
- package/dist/mcp/index.js +234 -29
- package/dist/server/index.js +74 -22
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/server/index.js
CHANGED
|
@@ -111,6 +111,10 @@ function runMigrations(db) {
|
|
|
111
111
|
CREATE INDEX IF NOT EXISTS idx_versions_prompt_id ON prompt_versions(prompt_id);
|
|
112
112
|
`
|
|
113
113
|
},
|
|
114
|
+
{
|
|
115
|
+
name: "003_pinned",
|
|
116
|
+
sql: `ALTER TABLE prompts ADD COLUMN pinned INTEGER NOT NULL DEFAULT 0;`
|
|
117
|
+
},
|
|
114
118
|
{
|
|
115
119
|
name: "002_fts5",
|
|
116
120
|
sql: `
|
|
@@ -164,6 +168,15 @@ function resolvePrompt(db, idOrSlug) {
|
|
|
164
168
|
const byPrefix = db.query("SELECT id FROM prompts WHERE id LIKE ? LIMIT 2").all(`${idOrSlug}%`);
|
|
165
169
|
if (byPrefix.length === 1 && byPrefix[0])
|
|
166
170
|
return byPrefix[0].id;
|
|
171
|
+
const bySlugPrefix = db.query("SELECT id FROM prompts WHERE slug LIKE ? LIMIT 2").all(`${idOrSlug}%`);
|
|
172
|
+
if (bySlugPrefix.length === 1 && bySlugPrefix[0])
|
|
173
|
+
return bySlugPrefix[0].id;
|
|
174
|
+
const bySlugSub = db.query("SELECT id FROM prompts WHERE slug LIKE ? LIMIT 2").all(`%${idOrSlug}%`);
|
|
175
|
+
if (bySlugSub.length === 1 && bySlugSub[0])
|
|
176
|
+
return bySlugSub[0].id;
|
|
177
|
+
const byTitle = db.query("SELECT id FROM prompts WHERE lower(title) LIKE ? LIMIT 2").all(`%${idOrSlug.toLowerCase()}%`);
|
|
178
|
+
if (byTitle.length === 1 && byTitle[0])
|
|
179
|
+
return byTitle[0].id;
|
|
167
180
|
return null;
|
|
168
181
|
}
|
|
169
182
|
|
|
@@ -181,25 +194,24 @@ function uniqueSlug(baseSlug) {
|
|
|
181
194
|
}
|
|
182
195
|
return slug;
|
|
183
196
|
}
|
|
197
|
+
var CHARS = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
198
|
+
function nanoid(len) {
|
|
199
|
+
let id = "";
|
|
200
|
+
for (let i = 0;i < len; i++) {
|
|
201
|
+
id += CHARS[Math.floor(Math.random() * CHARS.length)];
|
|
202
|
+
}
|
|
203
|
+
return id;
|
|
204
|
+
}
|
|
184
205
|
function generatePromptId() {
|
|
185
206
|
const db = getDatabase();
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
next = parseInt(match[1], 10) + 1;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return `PRMT-${String(next).padStart(5, "0")}`;
|
|
207
|
+
let id;
|
|
208
|
+
do {
|
|
209
|
+
id = `prmt-${nanoid(8)}`;
|
|
210
|
+
} while (db.query("SELECT 1 FROM prompts WHERE id = ?").get(id));
|
|
211
|
+
return id;
|
|
195
212
|
}
|
|
196
213
|
function generateId(prefix) {
|
|
197
|
-
|
|
198
|
-
let id = prefix + "-";
|
|
199
|
-
for (let i = 0;i < 8; i++) {
|
|
200
|
-
id += chars[Math.floor(Math.random() * chars.length)];
|
|
201
|
-
}
|
|
202
|
-
return id;
|
|
214
|
+
return `${prefix}-${nanoid(8)}`;
|
|
203
215
|
}
|
|
204
216
|
|
|
205
217
|
// src/db/collections.ts
|
|
@@ -257,6 +269,36 @@ function movePrompt(promptIdOrSlug, targetCollection) {
|
|
|
257
269
|
]);
|
|
258
270
|
}
|
|
259
271
|
|
|
272
|
+
// src/lib/duplicates.ts
|
|
273
|
+
function tokenize(text) {
|
|
274
|
+
return new Set(text.toLowerCase().replace(/[^a-z0-9\s]/g, " ").split(/\s+/).filter((w) => w.length > 2));
|
|
275
|
+
}
|
|
276
|
+
function similarity(a, b) {
|
|
277
|
+
const ta = tokenize(a);
|
|
278
|
+
const tb = tokenize(b);
|
|
279
|
+
if (ta.size === 0 || tb.size === 0)
|
|
280
|
+
return 0;
|
|
281
|
+
let shared = 0;
|
|
282
|
+
for (const word of ta) {
|
|
283
|
+
if (tb.has(word))
|
|
284
|
+
shared++;
|
|
285
|
+
}
|
|
286
|
+
return shared / Math.max(ta.size, tb.size);
|
|
287
|
+
}
|
|
288
|
+
function findDuplicates(body, threshold = 0.8, excludeSlug) {
|
|
289
|
+
const all = listPrompts({ limit: 1e4 });
|
|
290
|
+
const matches = [];
|
|
291
|
+
for (const p of all) {
|
|
292
|
+
if (excludeSlug && p.slug === excludeSlug)
|
|
293
|
+
continue;
|
|
294
|
+
const score = similarity(body, p.body);
|
|
295
|
+
if (score >= threshold) {
|
|
296
|
+
matches.push({ prompt: p, score });
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return matches.sort((a, b) => b.score - a.score);
|
|
300
|
+
}
|
|
301
|
+
|
|
260
302
|
// src/lib/template.ts
|
|
261
303
|
var VAR_PATTERN = /\{\{\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*(?:\|\s*(.*?)\s*)?\}\}/g;
|
|
262
304
|
function extractVariables(body) {
|
|
@@ -334,6 +376,7 @@ function rowToPrompt(row) {
|
|
|
334
376
|
collection: row["collection"],
|
|
335
377
|
tags: JSON.parse(row["tags"] || "[]"),
|
|
336
378
|
variables: JSON.parse(row["variables"] || "[]"),
|
|
379
|
+
pinned: Boolean(row["pinned"]),
|
|
337
380
|
is_template: Boolean(row["is_template"]),
|
|
338
381
|
source: row["source"],
|
|
339
382
|
version: row["version"],
|
|
@@ -408,7 +451,7 @@ function listPrompts(filter = {}) {
|
|
|
408
451
|
const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
|
|
409
452
|
const limit = filter.limit ?? 100;
|
|
410
453
|
const offset = filter.offset ?? 0;
|
|
411
|
-
const rows = db.query(`SELECT * FROM prompts ${where} ORDER BY use_count DESC, updated_at DESC LIMIT ? OFFSET ?`).all(
|
|
454
|
+
const rows = db.query(`SELECT * FROM prompts ${where} ORDER BY pinned DESC, use_count DESC, updated_at DESC LIMIT ? OFFSET ?`).all(...params, limit, offset);
|
|
412
455
|
return rows.map(rowToPrompt);
|
|
413
456
|
}
|
|
414
457
|
function updatePrompt(idOrSlug, input) {
|
|
@@ -458,7 +501,7 @@ function usePrompt(idOrSlug) {
|
|
|
458
501
|
db.run("UPDATE prompts SET use_count = use_count + 1, last_used_at = datetime('now') WHERE id = ?", [prompt.id]);
|
|
459
502
|
return requirePrompt(prompt.id);
|
|
460
503
|
}
|
|
461
|
-
function upsertPrompt(input) {
|
|
504
|
+
function upsertPrompt(input, force = false) {
|
|
462
505
|
const db = getDatabase();
|
|
463
506
|
const slug = input.slug || generateSlug(input.title);
|
|
464
507
|
const existing = db.query("SELECT id FROM prompts WHERE slug = ?").get(slug);
|
|
@@ -473,8 +516,16 @@ function upsertPrompt(input) {
|
|
|
473
516
|
});
|
|
474
517
|
return { prompt: prompt2, created: false };
|
|
475
518
|
}
|
|
519
|
+
let duplicate_warning;
|
|
520
|
+
if (!force && input.body) {
|
|
521
|
+
const dupes = findDuplicates(input.body, 0.8, slug);
|
|
522
|
+
if (dupes.length > 0) {
|
|
523
|
+
const top = dupes[0];
|
|
524
|
+
duplicate_warning = `Similar prompt already exists: "${top.prompt.slug}" (${Math.round(top.score * 100)}% match). Use --force to save anyway.`;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
476
527
|
const prompt = createPrompt({ ...input, slug });
|
|
477
|
-
return { prompt, created: true };
|
|
528
|
+
return { prompt, created: true, duplicate_warning };
|
|
478
529
|
}
|
|
479
530
|
function getPromptStats() {
|
|
480
531
|
const db = getDatabase();
|
|
@@ -540,6 +591,7 @@ function rowToSearchResult(row, snippet) {
|
|
|
540
591
|
collection: row["collection"],
|
|
541
592
|
tags: JSON.parse(row["tags"] || "[]"),
|
|
542
593
|
variables: JSON.parse(row["variables"] || "[]"),
|
|
594
|
+
pinned: Boolean(row["pinned"]),
|
|
543
595
|
is_template: Boolean(row["is_template"]),
|
|
544
596
|
source: row["source"],
|
|
545
597
|
version: row["version"],
|
|
@@ -594,7 +646,7 @@ function searchPrompts(query, filter = {}) {
|
|
|
594
646
|
WHERE prompts_fts MATCH ?
|
|
595
647
|
${where}
|
|
596
648
|
ORDER BY bm25(prompts_fts)
|
|
597
|
-
LIMIT ? OFFSET ?`).all(
|
|
649
|
+
LIMIT ? OFFSET ?`).all(ftsQuery, ...params, limit, offset);
|
|
598
650
|
return rows2.map((r) => rowToSearchResult(r, r["snippet"]));
|
|
599
651
|
} catch {}
|
|
600
652
|
}
|
|
@@ -602,7 +654,7 @@ function searchPrompts(query, filter = {}) {
|
|
|
602
654
|
const rows = db.query(`SELECT *, 1 as score FROM prompts
|
|
603
655
|
WHERE (name LIKE ? OR slug LIKE ? OR title LIKE ? OR body LIKE ? OR description LIKE ? OR tags LIKE ?)
|
|
604
656
|
ORDER BY use_count DESC, updated_at DESC
|
|
605
|
-
LIMIT ? OFFSET ?`).all(
|
|
657
|
+
LIMIT ? OFFSET ?`).all(like, like, like, like, like, like, filter.limit ?? 50, filter.offset ?? 0);
|
|
606
658
|
return rows.map((r) => rowToSearchResult(r));
|
|
607
659
|
}
|
|
608
660
|
function findSimilar(promptId, limit = 5) {
|
|
@@ -613,10 +665,10 @@ function findSimilar(promptId, limit = 5) {
|
|
|
613
665
|
const tags = JSON.parse(prompt["tags"] || "[]");
|
|
614
666
|
const collection = prompt["collection"];
|
|
615
667
|
if (tags.length === 0) {
|
|
616
|
-
const rows = db.query("SELECT *, 1 as score FROM prompts WHERE collection = ? AND id != ? ORDER BY use_count DESC LIMIT ?").all(
|
|
668
|
+
const rows = db.query("SELECT *, 1 as score FROM prompts WHERE collection = ? AND id != ? ORDER BY use_count DESC LIMIT ?").all(collection, promptId, limit);
|
|
617
669
|
return rows.map((r) => rowToSearchResult(r));
|
|
618
670
|
}
|
|
619
|
-
const allRows = db.query("SELECT * FROM prompts WHERE id != ?").all(
|
|
671
|
+
const allRows = db.query("SELECT * FROM prompts WHERE id != ?").all(promptId);
|
|
620
672
|
const scored = allRows.map((row) => {
|
|
621
673
|
const rowTags = JSON.parse(row["tags"] || "[]");
|
|
622
674
|
const overlap = rowTags.filter((t) => tags.includes(t)).length;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/prompts",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Reusable prompt library for AI agents — CLI + MCP server + REST API + web dashboard",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
9
|
+
"prompts": "dist/cli/index.js",
|
|
10
|
+
"prompts-mcp": "dist/mcp/index.js",
|
|
11
|
+
"prompts-serve": "dist/server/index.js"
|
|
12
12
|
},
|
|
13
13
|
"exports": {
|
|
14
14
|
".": {
|