@a-company/paradigm 3.0.0 → 3.0.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/{chunk-MOZPTZ77.js → chunk-GWM2WRXL.js} +1 -1
- package/dist/{chunk-CH6VCTXQ.js → chunk-QS36NGWV.js} +1 -1
- package/dist/{chunk-A5BKW7QV.js → chunk-YCLN7WXV.js} +4 -0
- package/dist/{chunk-2NMUSZFA.js → chunk-ZPN7MXRA.js} +1 -1
- package/dist/{doctor-QMPFQONP.js → doctor-JBIV5PMN.js} +2 -2
- package/dist/index.js +10 -10
- package/dist/{sentinel-J64XJVTU.js → sentinel-RSEXIRXM.js} +1 -1
- package/dist/{server-SKGY7GFZ.js → server-E2CNZC4K.js} +26 -7
- package/dist/{server-VUYAY7TP.js → server-NXG5N7JE.js} +1 -1
- package/dist/{shift-BJKPOYEF.js → shift-NABNKPGL.js} +4 -4
- package/dist/{summary-ZIEIBCAF.js → summary-5SBFO7QK.js} +1 -1
- package/dist/{sync-PF3MJ3E4.js → sync-5KSTPJ4B.js} +2 -2
- package/dist/{university-IXTJCROL.js → university-65YJZ2LW.js} +10 -2
- package/dist/university-content/courses/para-101.json +561 -0
- package/dist/university-content/courses/para-201.json +707 -0
- package/dist/university-content/courses/para-301.json +654 -0
- package/dist/university-content/courses/para-401.json +640 -0
- package/dist/university-content/plsat/v2.0.json +760 -0
- package/dist/university-content/plsat/v3.0.json +1162 -0
- package/dist/university-content/reference.json +336 -0
- package/dist/university-ui/assets/index-CoBFthx2.js +87 -0
- package/dist/university-ui/assets/index-CoBFthx2.js.map +1 -0
- package/dist/university-ui/assets/index-DW2N5NTk.css +1 -0
- package/dist/university-ui/index.html +17 -0
- package/dist/{upgrade-X4PVS7UV.js → upgrade-TIYFQYPO.js} +1 -1
- package/dist/{watch-QYGAIYZ3.js → watch-2XEYUH43.js} +1 -1
- package/package.json +3 -2
|
@@ -532,6 +532,8 @@ ${f.content}`).join("\n\n---\n\n");
|
|
|
532
532
|
const overview = generateOverview(config);
|
|
533
533
|
return frontmatter("Paradigm core rules - project overview and fundamentals", { alwaysApply: true }) + `# Paradigm - ${projectName}
|
|
534
534
|
|
|
535
|
+
> **Author:** Matt Canoy ([@ascend42](https://github.com/ascend42)) | **Repo:** [github.com/ascend42/a-paradigm](https://github.com/ascend42/a-paradigm) | **npm:** [@a-company/paradigm](https://www.npmjs.com/package/@a-company/paradigm)
|
|
536
|
+
|
|
535
537
|
` + overview + "\n\n" + generateUpdateRules(config);
|
|
536
538
|
}
|
|
537
539
|
/**
|
|
@@ -1499,6 +1501,8 @@ var ClaudeAdapter = class {
|
|
|
1499
1501
|
sections.push(`# ${projectName} - Claude Context`);
|
|
1500
1502
|
sections.push("");
|
|
1501
1503
|
sections.push("> **Paradigm v2.0** | For Claude Code, Claude API, and Claude-native interfaces");
|
|
1504
|
+
sections.push(">");
|
|
1505
|
+
sections.push("> **Author:** Matt Canoy ([@ascend42](https://github.com/ascend42)) | **Repo:** [github.com/ascend42/a-paradigm](https://github.com/ascend42/a-paradigm) | **npm:** [@a-company/paradigm](https://www.npmjs.com/package/@a-company/paradigm) | **Plugin:** `paradigm` via Claude Code marketplace");
|
|
1502
1506
|
sections.push("");
|
|
1503
1507
|
sections.push("## Project Overview");
|
|
1504
1508
|
sections.push("");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
doctorCommand
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-ZPN7MXRA.js";
|
|
5
|
+
import "./chunk-YCLN7WXV.js";
|
|
6
6
|
import "./chunk-4NCFWYGG.js";
|
|
7
7
|
import "./chunk-YO6DVTL7.js";
|
|
8
8
|
import "./chunk-MO4EEYFW.js";
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
initCommand
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GWM2WRXL.js";
|
|
5
5
|
import "./chunk-CHSHON3O.js";
|
|
6
6
|
import "./chunk-N6PJAPDE.js";
|
|
7
7
|
import {
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import {
|
|
16
16
|
findGateFiles
|
|
17
17
|
} from "./chunk-IRKUEJVW.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-YCLN7WXV.js";
|
|
19
19
|
import {
|
|
20
20
|
log
|
|
21
21
|
} from "./chunk-4NCFWYGG.js";
|
|
@@ -107,7 +107,7 @@ ${chalk2.magenta("\u2569 ")}${chalk2.cyan("\u2534 \u2534\u2534\u2514\u2500\u253
|
|
|
107
107
|
program.name("paradigm").description("Unified developer tools ecosystem").version(VERSION).addHelpText("before", banner);
|
|
108
108
|
program.command("init").description("Initialize Paradigm in the current project").option("-f, --force", "Overwrite existing files").option("--name <name>", "Project name").option("--ide <ide>", "Target IDE: cursor, copilot, windsurf, claude").option("--migrate", "Output migration prompt for existing IDE files").option("--quick", "Non-interactive mode with smart defaults").option("--dry-run", "Show what would be created without creating").action(initCommand);
|
|
109
109
|
program.command("shift").description("Full project setup in one command (init + team init + scan + sync all IDEs + doctor)").option("-f, --force", "Reinitialize even if already setup").option("-q, --quick", "Skip slow operations (scan)").option("--verify", "Run health checks after setup").option("--ide <ide>", "Target specific IDE instead of all").option("--configure-models", "Force model configuration prompts for team agents").action(async (options) => {
|
|
110
|
-
const { shiftCommand } = await import("./shift-
|
|
110
|
+
const { shiftCommand } = await import("./shift-NABNKPGL.js");
|
|
111
111
|
await shiftCommand(options);
|
|
112
112
|
});
|
|
113
113
|
program.command("setup [path]").description("Interactive setup wizard for Paradigm").option("-y, --yes", "Accept all defaults (non-interactive)").option("-f, --force", "Overwrite existing .paradigm config").action(async (path2, options) => {
|
|
@@ -151,7 +151,7 @@ premiseCmd.command("snapshot <name>").description("Create a timeline snapshot").
|
|
|
151
151
|
await premiseSnapshotCommand(name, options.description);
|
|
152
152
|
});
|
|
153
153
|
program.command("sync [ide]").description("Generate IDE instruction files from .paradigm/ config").option("--all", "Sync all supported IDEs").option("-f, --force", "Overwrite existing files").option("--mcp", "Generate MCP configuration (default: true)").option("--no-mcp", "Skip MCP configuration generation").option("--nested", "Generate nested CLAUDE.md files for directories with .purpose").action(async (ide, options) => {
|
|
154
|
-
const { syncCommand } = await import("./sync-
|
|
154
|
+
const { syncCommand } = await import("./sync-5KSTPJ4B.js");
|
|
155
155
|
await syncCommand(ide, options);
|
|
156
156
|
});
|
|
157
157
|
program.command("cursorrules [path]").description("[DEPRECATED] Use `paradigm sync cursor` instead").option("-a, --append", "Append to existing .cursorrules").option("-f, --force", "Overwrite existing .cursorrules").option("-p, --preview", "Preview output without writing").option("--init", "Create default .paradigm config if missing").option("--with-scan", "Include probe protocol section").action(async (path2, options) => {
|
|
@@ -169,7 +169,7 @@ probeCmd.command("index [path]").description("Generate probe index (alias for `p
|
|
|
169
169
|
await indexCommand(path2, options);
|
|
170
170
|
});
|
|
171
171
|
program.command("upgrade [path]").description("Upgrade project with new Paradigm features").option("--features <features...>", "Features to upgrade (probe, logger)").option("--all", "Apply all available upgrades").option("--from-horizon", "Migrate from Horizon to Paradigm").option("--dry-run", "Show what would be upgraded without making changes").option("-f, --force", "Force re-upgrade even if already configured").action(async (path2, options) => {
|
|
172
|
-
const { upgradeCommand } = await import("./upgrade-
|
|
172
|
+
const { upgradeCommand } = await import("./upgrade-TIYFQYPO.js");
|
|
173
173
|
await upgradeCommand(path2, options);
|
|
174
174
|
});
|
|
175
175
|
program.command("lint [path]").description("Validate .purpose files for schema errors").option("-f, --fix", "Auto-fix issues where possible").option("-s, --strict", "Fail on warnings (not just errors)").option("-q, --quiet", "Suppress output except errors").option("--json", "Output as JSON").action(async (path2, options) => {
|
|
@@ -276,15 +276,15 @@ teamCmd.action(async () => {
|
|
|
276
276
|
await teamStatusCommand(void 0, {});
|
|
277
277
|
});
|
|
278
278
|
program.command("doctor").description("Health check - validate Paradigm setup").action(async () => {
|
|
279
|
-
const { doctorCommand } = await import("./doctor-
|
|
279
|
+
const { doctorCommand } = await import("./doctor-JBIV5PMN.js");
|
|
280
280
|
await doctorCommand();
|
|
281
281
|
});
|
|
282
282
|
program.command("watch").description("Watch for changes and auto-sync IDE files").action(async () => {
|
|
283
|
-
const { watchCommand } = await import("./watch-
|
|
283
|
+
const { watchCommand } = await import("./watch-2XEYUH43.js");
|
|
284
284
|
await watchCommand();
|
|
285
285
|
});
|
|
286
286
|
program.command("summary").description("Generate .paradigm/project.md with project stats").action(async () => {
|
|
287
|
-
const { summaryCommand } = await import("./summary-
|
|
287
|
+
const { summaryCommand } = await import("./summary-5SBFO7QK.js");
|
|
288
288
|
await summaryCommand();
|
|
289
289
|
});
|
|
290
290
|
program.command("constellation [path]").alias("const").description("Generate .paradigm/constellation.json - symbol relationship graph for AI agents").option("-f, --format <format>", "Output format: json or yaml", "json").option("-o, --output <path>", "Custom output path").option("-q, --quiet", "Suppress output").action(async (path2, options) => {
|
|
@@ -579,11 +579,11 @@ loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open"
|
|
|
579
579
|
await loreServeCommand(void 0, options);
|
|
580
580
|
});
|
|
581
581
|
program.command("sentinel [path]").description("Launch the Sentinel UI - unified codebase intelligence visualizer").option("-p, --port <port>", "Port to run on", "3838").option("--no-open", "Don't open browser automatically").action(async (path2, options) => {
|
|
582
|
-
const { sentinelCommand } = await import("./sentinel-
|
|
582
|
+
const { sentinelCommand } = await import("./sentinel-RSEXIRXM.js");
|
|
583
583
|
await sentinelCommand(path2, options);
|
|
584
584
|
});
|
|
585
585
|
program.command("university").description("Launch Paradigm University - interactive learning platform & PLSAT certification").option("-p, --port <port>", "Port to run on", "3839").option("--no-open", "Don't open browser automatically").action(async (options) => {
|
|
586
|
-
const { universityCommand } = await import("./university-
|
|
586
|
+
const { universityCommand } = await import("./university-65YJZ2LW.js");
|
|
587
587
|
await universityCommand(void 0, options);
|
|
588
588
|
});
|
|
589
589
|
program.parse();
|
|
@@ -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-NXG5N7JE.js");
|
|
13
13
|
console.log(chalk.gray(`Project: ${projectDir}`));
|
|
14
14
|
console.log(chalk.gray(`Port: ${port}`));
|
|
15
15
|
console.log();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import "./chunk-MO4EEYFW.js";
|
|
3
3
|
|
|
4
|
-
// ../university/dist/chunk-
|
|
4
|
+
// ../university/dist/chunk-3ZAP26AP.js
|
|
5
5
|
import express from "express";
|
|
6
6
|
import * as path3 from "path";
|
|
7
7
|
import * as fs3 from "fs";
|
|
@@ -201,7 +201,25 @@ var log = {
|
|
|
201
201
|
};
|
|
202
202
|
}
|
|
203
203
|
};
|
|
204
|
-
function
|
|
204
|
+
function resolveAssetPaths(options) {
|
|
205
|
+
if (options?.contentDir && options?.uiDistPath) {
|
|
206
|
+
return { contentDir: options.contentDir, uiDistPath: options.uiDistPath };
|
|
207
|
+
}
|
|
208
|
+
const bundledContent = path3.join(__dirname, "university-content");
|
|
209
|
+
const bundledUi = path3.join(__dirname, "university-ui");
|
|
210
|
+
if (fs3.existsSync(bundledContent) && fs3.existsSync(bundledUi)) {
|
|
211
|
+
return {
|
|
212
|
+
contentDir: options?.contentDir || bundledContent,
|
|
213
|
+
uiDistPath: options?.uiDistPath || bundledUi
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
const packageRoot = findPackageRoot(__dirname);
|
|
217
|
+
return {
|
|
218
|
+
contentDir: options?.contentDir || path3.join(packageRoot, "src", "content"),
|
|
219
|
+
uiDistPath: options?.uiDistPath || path3.join(packageRoot, "ui", "dist")
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function createApp(options) {
|
|
205
223
|
const app = express();
|
|
206
224
|
app.use(express.json());
|
|
207
225
|
app.use((_req, res, next) => {
|
|
@@ -210,8 +228,7 @@ function createApp() {
|
|
|
210
228
|
res.header("Access-Control-Allow-Headers", "Content-Type");
|
|
211
229
|
next();
|
|
212
230
|
});
|
|
213
|
-
const
|
|
214
|
-
const contentDir = path3.join(packageRoot, "src", "content");
|
|
231
|
+
const { contentDir, uiDistPath } = resolveAssetPaths(options);
|
|
215
232
|
app.use("/api/courses", createCoursesRouter(contentDir));
|
|
216
233
|
app.use("/api/plsat", createPlsatRouter(contentDir));
|
|
217
234
|
app.get("/api/reference", (_req, res) => {
|
|
@@ -226,10 +243,9 @@ function createApp() {
|
|
|
226
243
|
app.get("/api/health", (_req, res) => {
|
|
227
244
|
res.json({ status: "ok", timestamp: (/* @__PURE__ */ new Date()).toISOString() });
|
|
228
245
|
});
|
|
229
|
-
const uiDistPath = path3.join(packageRoot, "ui", "dist");
|
|
230
246
|
if (fs3.existsSync(uiDistPath)) {
|
|
231
247
|
app.use(express.static(uiDistPath));
|
|
232
|
-
app.get("*", (req, res) => {
|
|
248
|
+
app.get("{*path}", (req, res) => {
|
|
233
249
|
if (!req.path.startsWith("/api")) {
|
|
234
250
|
res.sendFile(path3.join(uiDistPath, "index.html"));
|
|
235
251
|
}
|
|
@@ -238,7 +254,10 @@ function createApp() {
|
|
|
238
254
|
return app;
|
|
239
255
|
}
|
|
240
256
|
async function startServer(options) {
|
|
241
|
-
const app = createApp(
|
|
257
|
+
const app = createApp({
|
|
258
|
+
contentDir: options.contentDir,
|
|
259
|
+
uiDistPath: options.uiDistPath
|
|
260
|
+
});
|
|
242
261
|
log.component("university-server").info("Starting server", { port: options.port });
|
|
243
262
|
return new Promise((resolve, reject) => {
|
|
244
263
|
const server = app.listen(options.port, () => {
|
|
@@ -6089,7 +6089,7 @@ function createApp(options) {
|
|
|
6089
6089
|
const uiDistPath = path3.join(__dirname, "..", "..", "ui", "dist");
|
|
6090
6090
|
if (fs2.existsSync(uiDistPath)) {
|
|
6091
6091
|
app.use(express.static(uiDistPath));
|
|
6092
|
-
app.get("*", (req, res) => {
|
|
6092
|
+
app.get("{*path}", (req, res) => {
|
|
6093
6093
|
if (!req.path.startsWith("/api")) {
|
|
6094
6094
|
res.sendFile(path3.join(uiDistPath, "index.html"));
|
|
6095
6095
|
}
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
indexCommand,
|
|
18
18
|
initCommand
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-GWM2WRXL.js";
|
|
20
20
|
import {
|
|
21
21
|
detectDiscipline
|
|
22
22
|
} from "./chunk-CHSHON3O.js";
|
|
@@ -26,11 +26,11 @@ import "./chunk-PW2EXJQT.js";
|
|
|
26
26
|
import "./chunk-IRKUEJVW.js";
|
|
27
27
|
import {
|
|
28
28
|
syncCommand
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-QS36NGWV.js";
|
|
30
30
|
import {
|
|
31
31
|
doctorCommand
|
|
32
|
-
} from "./chunk-
|
|
33
|
-
import "./chunk-
|
|
32
|
+
} from "./chunk-ZPN7MXRA.js";
|
|
33
|
+
import "./chunk-YCLN7WXV.js";
|
|
34
34
|
import {
|
|
35
35
|
log
|
|
36
36
|
} from "./chunk-4NCFWYGG.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
syncCommand
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-QS36NGWV.js";
|
|
5
|
+
import "./chunk-YCLN7WXV.js";
|
|
6
6
|
import "./chunk-4NCFWYGG.js";
|
|
7
7
|
import "./chunk-YO6DVTL7.js";
|
|
8
8
|
import "./chunk-MO4EEYFW.js";
|
|
@@ -3,17 +3,25 @@ import "./chunk-MO4EEYFW.js";
|
|
|
3
3
|
|
|
4
4
|
// src/commands/university.ts
|
|
5
5
|
import chalk from "chalk";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
import { fileURLToPath } from "url";
|
|
8
|
+
var __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
var __dirname = path.dirname(__filename);
|
|
6
10
|
async function universityCommand(_path, options) {
|
|
7
11
|
const port = parseInt(options.port || "3839", 10);
|
|
8
12
|
const shouldOpen = options.open !== false;
|
|
9
13
|
console.log(chalk.cyan("\nOpening the campus gates...\n"));
|
|
10
14
|
try {
|
|
11
|
-
const { startServer } = await import("./server-
|
|
15
|
+
const { startServer } = await import("./server-E2CNZC4K.js");
|
|
16
|
+
const contentDir = path.resolve(__dirname, "university-content");
|
|
17
|
+
const uiDistPath = path.resolve(__dirname, "university-ui");
|
|
12
18
|
console.log(chalk.gray(`Port: ${port}`));
|
|
13
19
|
console.log();
|
|
14
20
|
await startServer({
|
|
15
21
|
port,
|
|
16
|
-
open: shouldOpen
|
|
22
|
+
open: shouldOpen,
|
|
23
|
+
contentDir,
|
|
24
|
+
uiDistPath
|
|
17
25
|
});
|
|
18
26
|
console.log(chalk.green(`
|
|
19
27
|
Paradigm University is running at http://localhost:${port}`));
|