@a-company/paradigm 6.3.4 → 6.6.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/dist/add-CBDFTWST.js +12 -0
- package/dist/chunk-5NAF6CKU.js +111 -0
- package/dist/{chunk-D34YFK4M.js → chunk-ERO4MJSH.js} +1 -1
- package/dist/{chunk-SRWROALW.js → chunk-KGUQPYCF.js} +32 -32
- package/dist/chunk-P344HV6Z.js +2 -0
- package/dist/index.js +1 -1
- package/dist/init-TLNRDZPX.js +2 -0
- package/dist/list-AXKTBXKJ.js +12 -0
- package/dist/mcp.js +1 -1
- package/dist/{quiz-WYIZJG5K.js → quiz-G56CUN45.js} +1 -1
- package/dist/{reindex-PJVOMN57.js → reindex-2YTQP2EO.js} +1 -1
- package/dist/serve-TJQ5BNKR.js +12 -0
- package/dist/server-QOCW5RU6.js +7 -0
- package/dist/{show-WVHAL4VU.js → show-MTPEQFXK.js} +3 -3
- package/dist/status-REA6HUXE.js +6 -0
- package/dist/sync-global-4NQPDRIS.js +2 -0
- package/dist/{tools-2XPMZZBT.js → tools-SKDKBLDK.js} +1 -1
- package/dist/university-content/notes/N-fieldnotes-pack-authoring.md +222 -0
- package/dist/university-content/pack.yaml +14 -0
- package/dist/university-content/paths/LP-fieldnotes-authoring.yaml +16 -0
- package/dist/university-ui/assets/index-BIQeax_b.js +87 -0
- package/dist/university-ui/assets/index-BIQeax_b.js.map +1 -0
- package/dist/university-ui/assets/index-C9zUgT5x.css +1 -0
- package/dist/university-ui/index.html +2 -2
- package/dist/validate-742XMB42.js +9 -0
- package/package.json +1 -1
- package/templates/agents/3d.agent +167 -0
- package/templates/agents/a11y.agent +120 -0
- package/templates/agents/advocate.agent +91 -0
- package/templates/agents/agent-evaluator.agent +179 -0
- package/templates/agents/ai.agent +129 -0
- package/templates/agents/analyst.agent +251 -0
- package/templates/agents/architect.agent +23 -0
- package/templates/agents/archivist.agent +97 -0
- package/templates/agents/audio.agent +102 -0
- package/templates/agents/builder.agent +141 -0
- package/templates/agents/cid.agent +188 -0
- package/templates/agents/community.agent +111 -0
- package/templates/agents/compliance.agent +231 -0
- package/templates/agents/content-intel.agent +155 -0
- package/templates/agents/copywriter.agent +154 -0
- package/templates/agents/creative.agent +205 -0
- package/templates/agents/data-model.agent +181 -0
- package/templates/agents/dataeng.agent +111 -0
- package/templates/agents/dba.agent +104 -0
- package/templates/agents/debugger.agent +92 -0
- package/templates/agents/designer.agent +241 -0
- package/templates/agents/devops.agent +166 -0
- package/templates/agents/documentor.agent +80 -0
- package/templates/agents/domain.agent +179 -0
- package/templates/agents/dx.agent +198 -0
- package/templates/agents/e2e.agent +152 -0
- package/templates/agents/educator.agent +181 -0
- package/templates/agents/ethicist.agent +106 -0
- package/templates/agents/finance.agent +130 -0
- package/templates/agents/forge.agent +217 -0
- package/templates/agents/forms.agent +181 -0
- package/templates/agents/ftux.agent +104 -0
- package/templates/agents/futurist.agent +104 -0
- package/templates/agents/gamedev.agent +175 -0
- package/templates/agents/geo.agent +179 -0
- package/templates/agents/i18n.agent +105 -0
- package/templates/agents/integrator.agent +167 -0
- package/templates/agents/legal.agent +112 -0
- package/templates/agents/mediator.agent +89 -0
- package/templates/agents/mentor.agent +106 -0
- package/templates/agents/mobile.agent +114 -0
- package/templates/agents/narrator.agent +96 -0
- package/templates/agents/network.agent +122 -0
- package/templates/agents/offline.agent +181 -0
- package/templates/agents/operations.agent +152 -0
- package/templates/agents/performance.agent +163 -0
- package/templates/agents/pm.agent +425 -0
- package/templates/agents/presenter.agent +105 -0
- package/templates/agents/product.agent +98 -0
- package/templates/agents/qa.agent +115 -0
- package/templates/agents/regulatory.agent +186 -0
- package/templates/agents/release.agent +108 -0
- package/templates/agents/report-gen.agent +184 -0
- package/templates/agents/researcher.agent +158 -0
- package/templates/agents/reverser.agent +121 -0
- package/templates/agents/reviewer.agent +105 -0
- package/templates/agents/sales.agent +159 -0
- package/templates/agents/scholar.agent +114 -0
- package/templates/agents/secretary.agent +196 -0
- package/templates/agents/security.agent +154 -0
- package/templates/agents/seo.agent +109 -0
- package/templates/agents/streaming.agent +138 -0
- package/templates/agents/swift.agent +119 -0
- package/templates/agents/sysadmin.agent +105 -0
- package/templates/agents/tester.agent +87 -0
- package/templates/agents/trainer.agent +121 -0
- package/templates/agents/translator.agent +115 -0
- package/dist/add-UOR4INIV.js +0 -8
- package/dist/chunk-EMGJWT7D.js +0 -111
- package/dist/chunk-Z5QW6USC.js +0 -2
- package/dist/init-M44SO65G.js +0 -2
- package/dist/list-CFHINXIS.js +0 -12
- package/dist/serve-U6C3R3NL.js +0 -12
- package/dist/server-7ZH2H7MQ.js +0 -7
- package/dist/status-S7Z5FVIE.js +0 -6
- package/dist/university-ui/assets/index-BlS8W3tC.js +0 -87
- package/dist/university-ui/assets/index-BlS8W3tC.js.map +0 -1
- package/dist/university-ui/assets/index-CMrxD7y5.css +0 -1
- package/dist/validate-XUQZTF3H.js +0 -9
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {d,e,c,b,a as a$1}from'./chunk-WR6D3SC6.js';import {a}from'./chunk-LKAT7IAK.js';import'./chunk-5TAVYPOV.js';import*as t from'fs';import*as n from'path';import*as A from'os';import {fileURLToPath}from'url';var u=n.join(A.homedir(),".paradigm","agents"),v=".agent";function w(){let e=fileURLToPath(import.meta.url),r=n.dirname(e),i=[n.join(r,"..","templates","agents"),n.join(r,"..","..","..","templates","agents"),n.join(r,"..","..","templates","agents"),n.join(r,"..","..","..","templates","agents")];for(let s of i)if(t.existsSync(s))return s;return null}async function T(e$1={}){let r=a.command("agent-sync-global").start("Syncing bundled agents to global dir",{force:!!e$1.force,dryRun:!!e$1.dryRun}),i=w();if(!i){d("Could not locate bundled agent templates (templates/agents/)."),e(" This usually means a broken or partial install. Try reinstalling @a-company/paradigm."),r.error("Bundled templates dir not found");return}let s;try{s=t.readdirSync(i).filter(o=>o.endsWith(v)).sort();}catch(o){d(`Failed to read bundled templates: ${o.message}`),r.error("Read bundled dir failed");return}if(s.length===0){c("No bundled .agent files found to sync."),r.success("Nothing to sync (0 bundled)");return}let f=s.length,a$2=[],d$1=[],c$1=[];!e$1.dryRun&&!t.existsSync(u)&&t.mkdirSync(u,{recursive:true});for(let o of s){let g=o.replace(v,""),$=n.join(i,o),m=n.join(u,o),R=t.existsSync(m);if(R&&!e$1.force){d$1.push(g);continue}R?(e$1.dryRun||t.copyFileSync($,m),c$1.push(g)):(e$1.dryRun||t.copyFileSync($,m),a$2.push(g));}let b$1=e$1.dryRun?"Dry run \u2014 ":"";e$1.force?b(`${b$1}Added ${a$2.length}, overwrote ${c$1.length}, ${f} total bundled.`):b(`${b$1}Added ${a$2.length}, skipped ${d$1.length} (already present), ${f} total bundled.`),a$2.length>0&&(a$1(e$1.dryRun?" Would add:":" Added:"),e(" "+a$2.join(", "))),c$1.length>0&&(a$1(e$1.dryRun?" Would overwrite:":" Overwrote:"),e(" "+c$1.join(", "))),d$1.length>0&&e(` Skipped ${d$1.length} already-present agent${d$1.length===1?"":"s"} (use --force to overwrite).`),e$1.dryRun||e(` Destination: ${u}`),r.success(`sync-global: added ${a$2.length}, overwrote ${c$1.length}, skipped ${d$1.length} of ${f}`);}export{T as agentSyncGlobalCommand};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export{h as registerTools}from'./chunk-
|
|
2
|
+
export{h as registerTools}from'./chunk-KGUQPYCF.js';import'./chunk-5NAF6CKU.js';import'./chunk-4UJ4NIEQ.js';import'./chunk-4N56FRNE.js';import'./chunk-Q527BPUF.js';import'./chunk-KLBH26PA.js';import'./chunk-ARLB6YYW.js';import'./chunk-SU5F5D4I.js';import'./chunk-JNSJVCTU.js';import'./chunk-XROULIQN.js';import'./chunk-ZUAUFZRJ.js';import'./chunk-3KVVC4WV.js';import'./chunk-M4UMM6DC.js';import'./chunk-GRZQIKST.js';import'./chunk-KAFQA7HV.js';import'./chunk-6QXBXZF6.js';import'./chunk-EK4ZRIFJ.js';import'./chunk-LAYBUKMB.js';import'./chunk-DVZWCXB6.js';import'./chunk-QGZRM6ZB.js';import'./chunk-K7X3Z3GL.js';import'./chunk-5TAVYPOV.js';
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-fieldnotes-pack-authoring
|
|
3
|
+
title: "Authoring your own University pack"
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-05-18'
|
|
7
|
+
updated: '2026-05-18'
|
|
8
|
+
section: field-notes
|
|
9
|
+
tags:
|
|
10
|
+
- university
|
|
11
|
+
- authoring
|
|
12
|
+
- electives
|
|
13
|
+
symbols: []
|
|
14
|
+
difficulty: beginner
|
|
15
|
+
estimatedMinutes: 6
|
|
16
|
+
summary: "How to scaffold and ship a project pack for your codebase."
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## What a pack is
|
|
20
|
+
|
|
21
|
+
A **pack** is a self-contained University tenant: one `pack.yaml` manifest plus a `content/` directory of notes, policies, quizzes, and learning paths. Paradigm's pack loader discovers packs at startup and serves them through a single UI at `localhost:3839`. Each pack has its own id, version, branding, and (since v6.5) sections.
|
|
22
|
+
|
|
23
|
+
You author a pack when you have learning material that belongs **next to your codebase** — onboarding guides for new engineers, security policies the team must acknowledge, scenario-based quizzes that mirror your real incident playbook. The content lives in git, gets reviewed in PRs, and is served to humans and AI agents alike.
|
|
24
|
+
|
|
25
|
+
## The four pack types
|
|
26
|
+
|
|
27
|
+
Paradigm recognizes four kinds of packs, distinguished by their `tenant_kind` and discovery path:
|
|
28
|
+
|
|
29
|
+
| Kind | `tenant_kind` | Discovered at | Use when |
|
|
30
|
+
|------|---------------|---------------|----------|
|
|
31
|
+
| First-party | `first-party` | `node_modules/@a-company/university/` | You're contributing back to Paradigm itself |
|
|
32
|
+
| Project | `project` | `.paradigm/university/` | Your team's onboarding, policies, scenarios |
|
|
33
|
+
| Discipline | `project` | `.paradigm/university/<name>/` | Splitting authoring by team — design, security, infra |
|
|
34
|
+
| External (npm) | `external` | Direct deps with `paradigm.universityPack` pointer | Publishing reusable packs to npm |
|
|
35
|
+
|
|
36
|
+
The default mode — running `paradigm university` from any Paradigm project — surfaces the first-party Paradigm pack. Adding `.paradigm/university/pack.yaml` to your repo creates a project pack that appears alongside it.
|
|
37
|
+
|
|
38
|
+
## Scaffolding a project pack
|
|
39
|
+
|
|
40
|
+
The fastest way to start is:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
paradigm university init
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
That writes `.paradigm/university/pack.yaml` with a sensible default manifest derived from your `.paradigm/config.yaml` project name. Re-run with `--force` to overwrite. To scaffold a discipline sub-pack:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
paradigm university init --discipline design
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
After init, the CLI prints a tip about sections (new in v6.5) — read it before authoring your first batch of entries.
|
|
53
|
+
|
|
54
|
+
## A minimum viable `pack.yaml`
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
id: acme-onboarding
|
|
58
|
+
name: "Acme Onboarding"
|
|
59
|
+
version: "0.1.0"
|
|
60
|
+
schema_version: "1"
|
|
61
|
+
tenant_kind: project
|
|
62
|
+
description: "Engineering onboarding for Acme."
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Required fields: `id`, `name`, `version`, `schema_version`, `tenant_kind`. Use kebab-case for the id. Everything else — branding, theme, sections, disciplines, dependencies, content_types — is optional.
|
|
66
|
+
|
|
67
|
+
For the full field reference (including the v6.5 `sections:` block), see [`docs/guides/university.md`](../../../../docs/guides/university.md) §4.5 and §7.
|
|
68
|
+
|
|
69
|
+
## The four content types
|
|
70
|
+
|
|
71
|
+
Every pack speaks the same content vocabulary:
|
|
72
|
+
|
|
73
|
+
### Notes (`N-<slug>.md`)
|
|
74
|
+
|
|
75
|
+
Markdown with YAML frontmatter. Stored at `content/notes/`. Use notes for architecture docs, onboarding pages, deep-dive explainers. Frontmatter must include `id`, `title`, `type: note`. Optional but recommended: `tags`, `difficulty`, `summary`, `section`, `order`.
|
|
76
|
+
|
|
77
|
+
### Policies (`P-<slug>.md`)
|
|
78
|
+
|
|
79
|
+
Same shape as notes (`type: policy`), stored at `content/policies/`. Use policies for review checklists, security gates, anything the team must acknowledge. Policies can carry `policy_version` and `policy_hash` for audit provenance (see the guide §6).
|
|
80
|
+
|
|
81
|
+
### Quizzes (`Q-<slug>.yaml`)
|
|
82
|
+
|
|
83
|
+
YAML at `content/quizzes/`. A quiz is an array of questions, each with labeled `choices` (A, B, C, …), a `correct` answer, and an optional `explanation`. Default pass threshold is 0.7. PLSAT-style scenarios — shared `scenario:` preamble + multiple `variants` per `slot` — are supported when you need exam-grade content.
|
|
84
|
+
|
|
85
|
+
```yaml
|
|
86
|
+
id: Q-onboarding-portal
|
|
87
|
+
title: "Portal basics"
|
|
88
|
+
type: quiz
|
|
89
|
+
passThreshold: 0.7
|
|
90
|
+
questions:
|
|
91
|
+
- id: q1
|
|
92
|
+
prompt: "Which symbol marks an authorization check?"
|
|
93
|
+
choices:
|
|
94
|
+
A: "#"
|
|
95
|
+
B: "^"
|
|
96
|
+
C: "!"
|
|
97
|
+
D: "$"
|
|
98
|
+
correct: B
|
|
99
|
+
explanation: "Gates use the caret prefix."
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Learning paths (`LP-<slug>.yaml`)
|
|
103
|
+
|
|
104
|
+
YAML at `content/paths/`. A path is an ordered (or unordered) list of steps, each referencing another entry by id. Paths are the canonical ordering for `track`-style sections — students traverse a path step by step, and the UI tracks progress per-step.
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
id: LP-onboarding
|
|
108
|
+
title: "Acme onboarding track"
|
|
109
|
+
ordered: true
|
|
110
|
+
section: courses
|
|
111
|
+
steps:
|
|
112
|
+
- content: N-acme-welcome
|
|
113
|
+
required: true
|
|
114
|
+
- content: Q-onboarding-portal
|
|
115
|
+
required: true
|
|
116
|
+
passRequired: true
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Sections (v6.5)
|
|
120
|
+
|
|
121
|
+
Sections group entries into named tabs in the UI. A pack with one section behaves exactly like a v6.4 pack (single-section packs collapse the section nav). A pack with two or more sections shows a tab strip and lets the author pick a presentation `style` per section:
|
|
122
|
+
|
|
123
|
+
| Style | What it renders | Good for |
|
|
124
|
+
|-------|----------------|----------|
|
|
125
|
+
| `track` | Ordered learning paths with progress rings | Courses, certifications |
|
|
126
|
+
| `index` | Alphabetical or `order:`-sorted entry list | Field notes, references |
|
|
127
|
+
| `chronological` | Newest-first by `created:` date | Changelogs, release notes |
|
|
128
|
+
| `featured` | Editor-curated highlights | Landing page, "start here" shelf |
|
|
129
|
+
|
|
130
|
+
Declare sections in `pack.yaml`:
|
|
131
|
+
|
|
132
|
+
```yaml
|
|
133
|
+
sections:
|
|
134
|
+
- id: courses
|
|
135
|
+
name: Courses
|
|
136
|
+
order: 0
|
|
137
|
+
style: track
|
|
138
|
+
default: true
|
|
139
|
+
description: Structured learning paths.
|
|
140
|
+
- id: field-notes
|
|
141
|
+
name: Field Notes
|
|
142
|
+
order: 1
|
|
143
|
+
style: index
|
|
144
|
+
description: Nice-to-knows and electives.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Then opt entries in via frontmatter:
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
---
|
|
151
|
+
id: N-deployment-runbook
|
|
152
|
+
section: field-notes
|
|
153
|
+
order: 10
|
|
154
|
+
---
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Entries without a `section:` land in the section marked `default: true` (or the first section if none is marked). At v6.5 the UI renders `track` natively and falls back to `track` rendering for the other styles — `index`, `chronological`, and `featured` ship their dedicated renderers as content demand grows.
|
|
158
|
+
|
|
159
|
+
## Cross-pack references
|
|
160
|
+
|
|
161
|
+
To reference content from another pack, qualify the id with `<pack-id>:`:
|
|
162
|
+
|
|
163
|
+
```yaml
|
|
164
|
+
prerequisites:
|
|
165
|
+
- paradigm:N-symbol-basics
|
|
166
|
+
- paradigm:Q-portal-fundamentals
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Bare ids resolve against the current pack context (the `--pack` flag, the MCP `pack` argument, or the active project pack). The validator rejects bare cross-pack refs — inter-pack wiring is always explicit so packs don't silently shadow each other.
|
|
170
|
+
|
|
171
|
+
You can also declare hard dependencies in `pack.yaml`:
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
dependencies:
|
|
175
|
+
- pack: paradigm
|
|
176
|
+
min_version: "6.0.0"
|
|
177
|
+
kind: required
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Validate before you commit
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
paradigm university validate
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Catches the integrity issues that bite later: broken path steps, bad quiz answer keys, missing titles, duplicate section ids, two sections marked default, entries referencing sections that don't exist. Run it in CI if your team authors content regularly.
|
|
187
|
+
|
|
188
|
+
## Publishing as an npm package
|
|
189
|
+
|
|
190
|
+
To share a pack across projects, publish the pack directory as a normal npm package:
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"name": "@acme/onboarding-pack",
|
|
195
|
+
"version": "1.0.0",
|
|
196
|
+
"files": ["pack.yaml", "content/"]
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Then consuming projects add a pointer in their `package.json`:
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"dependencies": {
|
|
205
|
+
"@acme/onboarding-pack": "^1.0.0"
|
|
206
|
+
},
|
|
207
|
+
"paradigm": {
|
|
208
|
+
"universityPack": "node_modules/@acme/onboarding-pack/"
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Paradigm's pack loader scans **direct dependencies only** for the `paradigm.universityPack` pointer — transitive deps are ignored to keep discovery predictable.
|
|
214
|
+
|
|
215
|
+
## Where to go next
|
|
216
|
+
|
|
217
|
+
- [`docs/guides/university.md`](../../../../docs/guides/university.md) §4.5 for the canonical sections reference.
|
|
218
|
+
- [`docs/guides/university.md`](../../../../docs/guides/university.md) §7 for the full `pack.yaml` field list.
|
|
219
|
+
- `paradigm university add` for scaffolding individual entries (`note`, `policy`, `quiz`, `path`).
|
|
220
|
+
- `paradigm university validate` whenever you've moved entries between sections or renamed an id.
|
|
221
|
+
|
|
222
|
+
The pack format is stable. The four content types and the cross-pack reference syntax landed in v5.39.0; sections landed in v6.5.0; everything else has been additive.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: paradigm-university
|
|
2
|
+
version: 6.5.0
|
|
3
|
+
sections:
|
|
4
|
+
- id: courses
|
|
5
|
+
name: Courses
|
|
6
|
+
order: 0
|
|
7
|
+
style: track
|
|
8
|
+
default: true
|
|
9
|
+
description: Structured Paradigm learning paths
|
|
10
|
+
- id: field-notes
|
|
11
|
+
name: Field Notes
|
|
12
|
+
order: 1
|
|
13
|
+
style: index
|
|
14
|
+
description: Nice-to-knows about Paradigm's nuanced features
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
id: LP-fieldnotes-authoring
|
|
2
|
+
title: "Authoring your own University pack"
|
|
3
|
+
description: A single-entry Field Notes path covering how to scaffold, structure, and ship a project pack for your codebase.
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-05-18'
|
|
6
|
+
updated: '2026-05-18'
|
|
7
|
+
section: field-notes
|
|
8
|
+
tags:
|
|
9
|
+
- university
|
|
10
|
+
- authoring
|
|
11
|
+
- electives
|
|
12
|
+
ordered: false
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
steps:
|
|
15
|
+
- content: N-fieldnotes-pack-authoring
|
|
16
|
+
required: true
|