@a-company/paradigm 3.0.0 → 3.0.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/{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 +13 -11
- 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";
|
|
@@ -25,6 +25,7 @@ import "./chunk-MO4EEYFW.js";
|
|
|
25
25
|
// src/index.ts
|
|
26
26
|
import { Command } from "commander";
|
|
27
27
|
import chalk2 from "chalk";
|
|
28
|
+
import { createRequire } from "module";
|
|
28
29
|
|
|
29
30
|
// src/commands/status.ts
|
|
30
31
|
import * as fs from "fs";
|
|
@@ -97,7 +98,8 @@ async function statusCommand() {
|
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
// src/index.ts
|
|
100
|
-
var
|
|
101
|
+
var require2 = createRequire(import.meta.url);
|
|
102
|
+
var { version: VERSION } = require2("../package.json");
|
|
101
103
|
var program = new Command();
|
|
102
104
|
var banner = `
|
|
103
105
|
${chalk2.magenta("\u2554\u2550\u2557")}${chalk2.cyan("\u250C\u2500\u2510\u252C\u2500\u2510\u250C\u2500\u2510\u250C\u252C\u2510\u252C \u250C\u2500\u2510\u250C\u252C\u2510")}
|
|
@@ -107,7 +109,7 @@ ${chalk2.magenta("\u2569 ")}${chalk2.cyan("\u2534 \u2534\u2534\u2514\u2500\u253
|
|
|
107
109
|
program.name("paradigm").description("Unified developer tools ecosystem").version(VERSION).addHelpText("before", banner);
|
|
108
110
|
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
111
|
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-
|
|
112
|
+
const { shiftCommand } = await import("./shift-NABNKPGL.js");
|
|
111
113
|
await shiftCommand(options);
|
|
112
114
|
});
|
|
113
115
|
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 +153,7 @@ premiseCmd.command("snapshot <name>").description("Create a timeline snapshot").
|
|
|
151
153
|
await premiseSnapshotCommand(name, options.description);
|
|
152
154
|
});
|
|
153
155
|
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-
|
|
156
|
+
const { syncCommand } = await import("./sync-5KSTPJ4B.js");
|
|
155
157
|
await syncCommand(ide, options);
|
|
156
158
|
});
|
|
157
159
|
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 +171,7 @@ probeCmd.command("index [path]").description("Generate probe index (alias for `p
|
|
|
169
171
|
await indexCommand(path2, options);
|
|
170
172
|
});
|
|
171
173
|
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-
|
|
174
|
+
const { upgradeCommand } = await import("./upgrade-TIYFQYPO.js");
|
|
173
175
|
await upgradeCommand(path2, options);
|
|
174
176
|
});
|
|
175
177
|
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 +278,15 @@ teamCmd.action(async () => {
|
|
|
276
278
|
await teamStatusCommand(void 0, {});
|
|
277
279
|
});
|
|
278
280
|
program.command("doctor").description("Health check - validate Paradigm setup").action(async () => {
|
|
279
|
-
const { doctorCommand } = await import("./doctor-
|
|
281
|
+
const { doctorCommand } = await import("./doctor-JBIV5PMN.js");
|
|
280
282
|
await doctorCommand();
|
|
281
283
|
});
|
|
282
284
|
program.command("watch").description("Watch for changes and auto-sync IDE files").action(async () => {
|
|
283
|
-
const { watchCommand } = await import("./watch-
|
|
285
|
+
const { watchCommand } = await import("./watch-2XEYUH43.js");
|
|
284
286
|
await watchCommand();
|
|
285
287
|
});
|
|
286
288
|
program.command("summary").description("Generate .paradigm/project.md with project stats").action(async () => {
|
|
287
|
-
const { summaryCommand } = await import("./summary-
|
|
289
|
+
const { summaryCommand } = await import("./summary-5SBFO7QK.js");
|
|
288
290
|
await summaryCommand();
|
|
289
291
|
});
|
|
290
292
|
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 +581,11 @@ loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open"
|
|
|
579
581
|
await loreServeCommand(void 0, options);
|
|
580
582
|
});
|
|
581
583
|
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-
|
|
584
|
+
const { sentinelCommand } = await import("./sentinel-RSEXIRXM.js");
|
|
583
585
|
await sentinelCommand(path2, options);
|
|
584
586
|
});
|
|
585
587
|
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-
|
|
588
|
+
const { universityCommand } = await import("./university-65YJZ2LW.js");
|
|
587
589
|
await universityCommand(void 0, options);
|
|
588
590
|
});
|
|
589
591
|
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}`));
|