@a-company/paradigm 3.0.3 → 3.1.2
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/{triage-RM5KNG5V.js → chunk-4LGLU2LO.js} +1035 -663
- package/dist/{chunk-4WR7X3FE.js → chunk-AQZSUGL3.js} +42 -6
- package/dist/{chunk-27OSFWHG.js → chunk-MVXJVRFI.js} +98 -1
- package/dist/{chunk-S65LENNL.js → chunk-VZ7CXFRZ.js} +248 -3
- package/dist/delete-W67IVTLJ.js +45 -0
- package/dist/dist-GPQ4LAY3.js +42 -0
- package/dist/edit-Y7XPYSMK.js +63 -0
- package/dist/habits-FA65W77Y.js +1153 -0
- package/dist/{hooks-7TQIRXXS.js → hooks-YXPQV4SP.js} +1 -1
- package/dist/index.js +84 -31
- package/dist/{list-QMUE7DPK.js → list-R3QWW4SC.js} +3 -1
- package/dist/{lore-server-3TAIUZ3Y.js → lore-server-RQH5REZV.js} +166 -41
- package/dist/mcp.js +1608 -117
- package/dist/{record-5CTCDFUO.js → record-OHQNWOUP.js} +7 -2
- package/dist/{review-QEDNQAIO.js → review-RUHX25A5.js} +1 -1
- package/dist/{sentinel-RSEXIRXM.js → sentinel-WB7GIK4V.js} +1 -1
- package/dist/{serve-WCIRW244.js → serve-H7ZBMODT.js} +1 -1
- package/dist/{server-NXG5N7JE.js → server-MV4HNFVF.js} +1 -1
- package/dist/{shift-NABNKPGL.js → shift-JDBRTHWO.js} +1 -1
- package/dist/{show-S653P3TO.js → show-WTOJXUTN.js} +1 -1
- package/dist/timeline-P7BARFLI.js +110 -0
- package/dist/triage-TBIWJA6R.js +671 -0
- package/dist/university-content/courses/para-401.json +1 -1
- package/dist/university-content/courses/para-501.json +486 -0
- package/dist/university-content/plsat/v3.0.json +233 -0
- package/dist/university-content/reference.json +61 -0
- package/lore-ui/dist/assets/index-BB3P4Cok.js +56 -0
- package/lore-ui/dist/assets/index-DI0Q6NmX.css +1 -0
- package/lore-ui/dist/index.html +2 -2
- package/package.json +1 -1
- package/lore-ui/dist/assets/index-DcT8TINz.js +0 -56
- package/lore-ui/dist/assets/index-DyJhpQ5w.css +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
recordLore
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-MVXJVRFI.js";
|
|
5
5
|
import "./chunk-MO4EEYFW.js";
|
|
6
6
|
|
|
7
7
|
// src/commands/lore/record.ts
|
|
@@ -13,6 +13,7 @@ async function loreRecordCommand(options) {
|
|
|
13
13
|
// auto-generated
|
|
14
14
|
type: options.type || "human-note",
|
|
15
15
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
16
|
+
duration_minutes: options.duration ? parseInt(options.duration, 10) : void 0,
|
|
16
17
|
author: {
|
|
17
18
|
type: "human",
|
|
18
19
|
id: options.author || "unknown"
|
|
@@ -20,11 +21,15 @@ async function loreRecordCommand(options) {
|
|
|
20
21
|
title: options.title || "Untitled",
|
|
21
22
|
summary: options.summary || "",
|
|
22
23
|
symbols_touched: options.symbols ? options.symbols.split(",").map((s) => s.trim()) : [],
|
|
24
|
+
files_modified: options.filesModified ? options.filesModified.split(",").map((f) => f.trim()) : void 0,
|
|
25
|
+
files_created: options.filesCreated ? options.filesCreated.split(",").map((f) => f.trim()) : void 0,
|
|
26
|
+
commit: options.commit || void 0,
|
|
27
|
+
learnings: options.learnings ? options.learnings.split(",").map((l) => l.trim()) : void 0,
|
|
23
28
|
tags: options.tags ? options.tags.split(",").map((t) => t.trim()) : void 0
|
|
24
29
|
};
|
|
25
30
|
await recordLore(rootDir, entry);
|
|
26
31
|
console.log(chalk.green(`
|
|
27
|
-
|
|
32
|
+
Lore entry recorded: ${entry.id}
|
|
28
33
|
`));
|
|
29
34
|
}
|
|
30
35
|
export {
|
|
@@ -9,7 +9,7 @@ async function sentinelCommand(path, options) {
|
|
|
9
9
|
const shouldOpen = options.open !== false;
|
|
10
10
|
console.log(chalk.cyan("\nStarting Sentinel...\n"));
|
|
11
11
|
try {
|
|
12
|
-
const { startServer } = await import("./server-
|
|
12
|
+
const { startServer } = await import("./server-MV4HNFVF.js");
|
|
13
13
|
console.log(chalk.gray(`Project: ${projectDir}`));
|
|
14
14
|
console.log(chalk.gray(`Port: ${port}`));
|
|
15
15
|
console.log();
|
|
@@ -9,7 +9,7 @@ async function loreServeCommand(path, options) {
|
|
|
9
9
|
const shouldOpen = options.open !== false;
|
|
10
10
|
console.log(chalk.cyan("\nStarting Lore Timeline...\n"));
|
|
11
11
|
try {
|
|
12
|
-
const { startLoreServer } = await import("./lore-server-
|
|
12
|
+
const { startLoreServer } = await import("./lore-server-RQH5REZV.js");
|
|
13
13
|
console.log(chalk.gray(`Project: ${projectDir}`));
|
|
14
14
|
console.log(chalk.gray(`Port: ${port}`));
|
|
15
15
|
console.log();
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
loadLoreEntries
|
|
4
|
+
} from "./chunk-MVXJVRFI.js";
|
|
5
|
+
import "./chunk-MO4EEYFW.js";
|
|
6
|
+
|
|
7
|
+
// src/commands/lore/timeline.ts
|
|
8
|
+
import chalk from "chalk";
|
|
9
|
+
async function loreTimelineCommand(options) {
|
|
10
|
+
const rootDir = process.cwd();
|
|
11
|
+
const limit = parseInt(options.limit || "20", 10);
|
|
12
|
+
const entries = await loadLoreEntries(rootDir, { limit });
|
|
13
|
+
if (entries.length === 0) {
|
|
14
|
+
if (options.json) {
|
|
15
|
+
console.log(JSON.stringify({ entries: [], byDate: {}, hotSymbols: [], authors: [] }, null, 2));
|
|
16
|
+
} else {
|
|
17
|
+
console.log(chalk.gray("\nNo lore entries found.\n"));
|
|
18
|
+
}
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const byDate = /* @__PURE__ */ new Map();
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
const date = entry.timestamp.slice(0, 10);
|
|
24
|
+
if (!byDate.has(date)) byDate.set(date, []);
|
|
25
|
+
byDate.get(date).push(entry);
|
|
26
|
+
}
|
|
27
|
+
const symbolCounts = /* @__PURE__ */ new Map();
|
|
28
|
+
for (const entry of entries) {
|
|
29
|
+
for (const sym of entry.symbols_touched) {
|
|
30
|
+
symbolCounts.set(sym, (symbolCounts.get(sym) || 0) + 1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const hotSymbols = Array.from(symbolCounts.entries()).sort(([, a], [, b]) => b - a).slice(0, 10).map(([symbol, count]) => ({ symbol, count }));
|
|
34
|
+
const authorActivity = /* @__PURE__ */ new Map();
|
|
35
|
+
for (const entry of entries) {
|
|
36
|
+
const aid = entry.author.id;
|
|
37
|
+
const existing = authorActivity.get(aid);
|
|
38
|
+
if (!existing) {
|
|
39
|
+
authorActivity.set(aid, { count: 1, type: entry.author.type, lastActive: entry.timestamp });
|
|
40
|
+
} else {
|
|
41
|
+
existing.count++;
|
|
42
|
+
if (entry.timestamp > existing.lastActive) existing.lastActive = entry.timestamp;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (options.json) {
|
|
46
|
+
const grouped = {};
|
|
47
|
+
for (const [date, dayEntries] of byDate) {
|
|
48
|
+
grouped[date] = dayEntries.map((e) => ({
|
|
49
|
+
id: e.id,
|
|
50
|
+
type: e.type,
|
|
51
|
+
title: e.title,
|
|
52
|
+
author: e.author.id,
|
|
53
|
+
symbols: e.symbols_touched
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
console.log(JSON.stringify({
|
|
57
|
+
total: entries.length,
|
|
58
|
+
byDate: grouped,
|
|
59
|
+
hotSymbols,
|
|
60
|
+
authors: Array.from(authorActivity.entries()).map(([id, info]) => ({
|
|
61
|
+
id,
|
|
62
|
+
type: info.type,
|
|
63
|
+
entries: info.count,
|
|
64
|
+
lastActive: info.lastActive
|
|
65
|
+
}))
|
|
66
|
+
}, null, 2));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const typeColor = {
|
|
70
|
+
"agent-session": chalk.hex("#818cf8"),
|
|
71
|
+
"human-note": chalk.hex("#34d399"),
|
|
72
|
+
"decision": chalk.hex("#fbbf24"),
|
|
73
|
+
"review": chalk.hex("#c084fc"),
|
|
74
|
+
"incident": chalk.hex("#f87171"),
|
|
75
|
+
"milestone": chalk.hex("#60a5fa")
|
|
76
|
+
};
|
|
77
|
+
console.log(chalk.magenta(`
|
|
78
|
+
Lore Timeline (${entries.length} entries)
|
|
79
|
+
`));
|
|
80
|
+
for (const [date, dayEntries] of byDate) {
|
|
81
|
+
console.log(chalk.white.bold(` ${date}`) + chalk.gray(` (${dayEntries.length} entries)`));
|
|
82
|
+
for (const entry of dayEntries) {
|
|
83
|
+
const colorFn = typeColor[entry.type] || chalk.white;
|
|
84
|
+
const time = entry.timestamp.slice(11, 16);
|
|
85
|
+
const authorIcon = entry.author.type === "agent" ? "\u{1F916}" : "\u{1F464}";
|
|
86
|
+
console.log(` ${chalk.gray(time)} ${colorFn(entry.type.padEnd(14))} ${chalk.white(entry.title)}`);
|
|
87
|
+
console.log(` ${authorIcon} ${chalk.gray(entry.author.id)} ${entry.symbols_touched.slice(0, 4).map((s) => chalk.cyan(s)).join(" ")}`);
|
|
88
|
+
}
|
|
89
|
+
console.log();
|
|
90
|
+
}
|
|
91
|
+
if (hotSymbols.length > 0) {
|
|
92
|
+
console.log(chalk.white(" Hot Symbols:"));
|
|
93
|
+
for (const { symbol, count } of hotSymbols.slice(0, 5)) {
|
|
94
|
+
const bar = "\u2588".repeat(Math.min(count, 20));
|
|
95
|
+
console.log(` ${chalk.cyan(symbol.padEnd(25))} ${chalk.gray(bar)} ${count}`);
|
|
96
|
+
}
|
|
97
|
+
console.log();
|
|
98
|
+
}
|
|
99
|
+
if (authorActivity.size > 0) {
|
|
100
|
+
console.log(chalk.white(" Active Authors:"));
|
|
101
|
+
for (const [id, info] of authorActivity) {
|
|
102
|
+
const icon = info.type === "agent" ? "\u{1F916}" : "\u{1F464}";
|
|
103
|
+
console.log(` ${icon} ${chalk.white(id)} - ${info.count} entries`);
|
|
104
|
+
}
|
|
105
|
+
console.log();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export {
|
|
109
|
+
loreTimelineCommand
|
|
110
|
+
};
|