@aacombarro89/praxis 0.1.8 → 0.1.10
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 +26 -19
- package/dist/codex-marketplace.d.ts +19 -0
- package/dist/codex-marketplace.js +113 -0
- package/dist/codex-marketplace.js.map +1 -0
- package/dist/codex-security.d.ts +11 -0
- package/dist/codex-security.js +144 -0
- package/dist/codex-security.js.map +1 -0
- package/dist/emit.d.ts +24 -10
- package/dist/emit.js +149 -70
- package/dist/emit.js.map +1 -1
- package/dist/init.d.ts +16 -6
- package/dist/init.js +47 -10
- package/dist/init.js.map +1 -1
- package/dist/manifest.d.ts +2 -2
- package/dist/manifest.js +1 -1
- package/dist/manifest.js.map +1 -1
- package/dist/packages.d.ts +20 -2
- package/dist/packages.js +54 -5
- package/dist/packages.js.map +1 -1
- package/dist/permissions.d.ts +17 -2
- package/dist/permissions.js +5 -14
- package/dist/permissions.js.map +1 -1
- package/dist/plugins.d.ts +16 -2
- package/dist/plugins.js +15 -15
- package/dist/plugins.js.map +1 -1
- package/dist/program.d.ts +3 -0
- package/dist/program.js +77 -31
- package/dist/program.js.map +1 -1
- package/dist/shared-instructions.d.ts +21 -0
- package/dist/shared-instructions.js +63 -0
- package/dist/shared-instructions.js.map +1 -0
- package/dist/sync.js +103 -7
- package/dist/sync.js.map +1 -1
- package/package.json +1 -1
- package/packages/external/ponytail/plugins.yaml +4 -1
- package/packages/layer1/capture-codebase-patterns/commands/capture-codebase-patterns.md +68 -0
- package/packages/layer1/capture-codebase-patterns/package.yaml +14 -0
- package/packages/layer1/instruction-upkeep/commands/instructions.md +14 -5
- package/packages/layer1/instruction-upkeep/rules.md +7 -3
- package/packages/layer1/onboarding/commands/onboard.md +42 -24
- package/packages/layer1/onboarding/rules.md +4 -4
- package/packages/layer1/safe-permissions/permissions.yaml +2 -2
- package/packages/layer1/session-handoff/commands/handoff.md +5 -5
- package/packages/layer1/session-handoff/rules.md +2 -2
- package/packages/layer1/upkeep/commands/upkeep.md +8 -5
- package/packages/layer1/upkeep/rules.md +8 -4
- package/packages/layer1/wiki-memory/commands/wiki.md +6 -6
- package/packages/layer1/wiki-memory/rules.md +4 -4
- package/packages/layer2/node-recipes/rules.md +18 -19
- package/packages/layer2/node-testing/rules.md +21 -26
- package/packages/layer2/python-backend-recipes/rules.md +18 -22
- package/packages/layer2/python-testing/rules.md +20 -26
- package/packages/layer2/react-components/rules.md +31 -26
- package/packages/layer2/react-testing/rules.md +19 -28
package/dist/emit.js
CHANGED
|
@@ -1,33 +1,17 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { parse as parseYaml } from "yaml";
|
|
4
4
|
import { reconcile } from "./merge.js";
|
|
5
5
|
import { BUCKETS, reconcileSettings, } from "./merge-json.js";
|
|
6
6
|
import { resolvePackages } from "./packages.js";
|
|
7
7
|
import { loadPolicy } from "./permissions.js";
|
|
8
8
|
import { loadPluginsBlock } from "./plugins.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* docs/wiki/merge-engine.md / docs/wiki/emitters.md, decisions D7/D13). The methodology source is **singular
|
|
12
|
-
* and tool-neutral**; emitters *translate* it per target — they never fork the
|
|
13
|
-
* content.
|
|
14
|
-
*
|
|
15
|
-
* Two delivery shapes, per target:
|
|
16
|
-
* - "owned": Praxis owns whole files (place/replace, no merge). Claude Code
|
|
17
|
-
* methodology ships as `.claude/rules/praxis-*.md`, auto-loaded every
|
|
18
|
-
* session; Praxis never edits the user's CLAUDE.md (D13).
|
|
19
|
-
* - "block": content is inlined into a flat instruction file via a managed
|
|
20
|
-
* block (merge engine). Used for AGENTS.md, which has no include standard.
|
|
21
|
-
*
|
|
22
|
-
* Package layout (D16): packages/<layer>/<pkg>/rules.md. `../packages/` resolves
|
|
23
|
-
* the same from src/ (dev/vitest) and dist/ (built/installed) — both one level
|
|
24
|
-
* under repo root.
|
|
25
|
-
*/
|
|
26
|
-
// Root of the per-layer package tree. Resolves identically from src/ and dist/.
|
|
27
|
-
const PACKAGES_DIR = new URL("../packages/", import.meta.url);
|
|
9
|
+
import { reconcileCodexConfig, renderCodexRules } from "./codex-security.js";
|
|
10
|
+
import { CODEX_MARKETPLACE_PATH, CODEX_MARKETPLACE_STATE_PATH, } from "./codex-marketplace.js";
|
|
28
11
|
// Where each target's methodology lives, and how it is delivered.
|
|
29
12
|
const TARGET_DELIVERY = {
|
|
30
13
|
"claude-code": "owned",
|
|
14
|
+
codex: "block",
|
|
31
15
|
"agents-md": "block",
|
|
32
16
|
};
|
|
33
17
|
// Block-delivered targets each own a managed block in one flat file. Exported
|
|
@@ -35,49 +19,66 @@ const TARGET_DELIVERY = {
|
|
|
35
19
|
// pruning even when the current manifest emits zero blocks for one (D46) —
|
|
36
20
|
// planEmit's ops alone wouldn't carry that path in that case.
|
|
37
21
|
export const BLOCK_FILE = {
|
|
22
|
+
codex: "AGENTS.md",
|
|
38
23
|
"agents-md": "AGENTS.md",
|
|
39
24
|
};
|
|
40
25
|
/** The neutral methodology source for a content package, or undefined if the
|
|
41
|
-
* package has no rules.md (e.g. skills, Layer 2 recipes handled by other phases).
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const candidate = join(root, entry.name, pkg, "rules.md");
|
|
48
|
-
if (existsSync(candidate))
|
|
49
|
-
return readFileSync(candidate, "utf8").trimEnd();
|
|
50
|
-
}
|
|
51
|
-
return undefined;
|
|
26
|
+
* package has no rules.md (e.g. skills, Layer 2 recipes handled by other phases).
|
|
27
|
+
* `dir` is the package's own directory (`ResolvedPackage.dir`) — shipped or
|
|
28
|
+
* project-local, resolved identically either way. */
|
|
29
|
+
export function loadPackageSource(dir) {
|
|
30
|
+
const candidate = join(dir, "rules.md");
|
|
31
|
+
return existsSync(candidate) ? readFileSync(candidate, "utf8").trimEnd() : undefined;
|
|
52
32
|
}
|
|
53
33
|
/** Translate neutral source for a specific target. The seam for per-tool
|
|
54
34
|
* framing; Layer 1 prose is identical across tools today. */
|
|
55
|
-
function
|
|
35
|
+
function renderNeutralSyntax(source, target) {
|
|
36
|
+
return source
|
|
37
|
+
.replace(/\{\{workflow:([^}]+)\}\}/g, (_match, name) => `${target === "codex" ? "$" : "/"}${name}`)
|
|
38
|
+
.replace(/\{\{shell:([^}]+)\}\}/g, (_match, command) => target === "codex" ? `run \`${command}\`` : `!\`${command}\``)
|
|
39
|
+
.replaceAll("{{arguments}}", target === "codex" ? "the arguments supplied with this skill" : "$ARGUMENTS");
|
|
40
|
+
}
|
|
41
|
+
function renderForTarget(source, target) {
|
|
42
|
+
source = renderNeutralSyntax(source, target);
|
|
43
|
+
if (target === "codex") {
|
|
44
|
+
const match = source.match(/^---\n([\s\S]*?)\n---\n?/);
|
|
45
|
+
if (match) {
|
|
46
|
+
const frontmatter = parseYaml(match[1]);
|
|
47
|
+
if (Array.isArray(frontmatter?.paths) && frontmatter.paths.every((path) => typeof path === "string")) {
|
|
48
|
+
const paths = frontmatter.paths.map((path) => `\`${path}\``).join(", ");
|
|
49
|
+
return `Applies only when working on files matching: ${paths}.\n\n${source.slice(match[0].length).trimStart()}`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
56
53
|
return source;
|
|
57
54
|
}
|
|
55
|
+
function renderCodexSkill(name, source) {
|
|
56
|
+
source = renderNeutralSyntax(source, "codex");
|
|
57
|
+
const match = source.match(/^---\n([\s\S]*?)\n---\n?/);
|
|
58
|
+
const descriptionMatch = match?.[1]?.match(/^description:\s*(.+)$/m);
|
|
59
|
+
const description = descriptionMatch?.[1]?.trim() ?? `Run the Praxis ${name} workflow.`;
|
|
60
|
+
let body = match ? source.slice(match[0].length).trimStart() : source;
|
|
61
|
+
body = body
|
|
62
|
+
.replaceAll("/praxis-", "$praxis-")
|
|
63
|
+
.replaceAll("$ARGUMENTS", "the arguments supplied with this skill")
|
|
64
|
+
.replace(/^\s*- ([^:]+): !`([^`]+)`$/gm, "- $1: run `$2`");
|
|
65
|
+
return `---\nname: praxis-${name}\ndescription: ${JSON.stringify(description)}\n---\n\n${body.trimEnd()}\n`;
|
|
66
|
+
}
|
|
58
67
|
/** A content package's commands, or [] if it has none. Scans
|
|
59
|
-
*
|
|
60
|
-
export function loadCommandSources(
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
.map((f) => ({
|
|
71
|
-
name: f.name.slice(0, -3),
|
|
72
|
-
content: readFileSync(join(dir, f.name), "utf8").trimEnd(),
|
|
73
|
-
}));
|
|
74
|
-
}
|
|
75
|
-
return [];
|
|
68
|
+
* `<dir>/commands/*.md` — mirrors loadPackageSource. */
|
|
69
|
+
export function loadCommandSources(dir) {
|
|
70
|
+
const commandsDir = join(dir, "commands");
|
|
71
|
+
if (!existsSync(commandsDir))
|
|
72
|
+
return [];
|
|
73
|
+
return readdirSync(commandsDir, { withFileTypes: true })
|
|
74
|
+
.filter((f) => f.isFile() && f.name.endsWith(".md"))
|
|
75
|
+
.map((f) => ({
|
|
76
|
+
name: f.name.slice(0, -3),
|
|
77
|
+
content: readFileSync(join(commandsDir, f.name), "utf8").trimEnd(),
|
|
78
|
+
}));
|
|
76
79
|
}
|
|
77
|
-
/** Targets
|
|
78
|
-
*
|
|
79
|
-
* fabricated file). Claude Code first (D19's "no permission model → no-op",
|
|
80
|
-
* same shape for commands). */
|
|
80
|
+
/** Targets that consume the source directly as slash-command markdown. Codex
|
|
81
|
+
* uses the separate SKILL.md renderer below. */
|
|
81
82
|
const COMMAND_DIR = {
|
|
82
83
|
"claude-code": ".claude/commands",
|
|
83
84
|
};
|
|
@@ -126,8 +127,8 @@ function toClaudeRuleSet(policy) {
|
|
|
126
127
|
return out;
|
|
127
128
|
}
|
|
128
129
|
/** Targets with a permission model, and where the rendered policy lands. A
|
|
129
|
-
* target absent here has no permission model
|
|
130
|
-
*
|
|
130
|
+
* target absent here has no Claude settings permission model. Codex security
|
|
131
|
+
* is emitted independently below. Shares a path
|
|
131
132
|
* with PLUGIN_EMITTERS below — both concerns compose into one settings op per
|
|
132
133
|
* target (see the single `kind: "settings"` EmitOp). */
|
|
133
134
|
const PERMISSION_EMITTERS = {
|
|
@@ -136,26 +137,28 @@ const PERMISSION_EMITTERS = {
|
|
|
136
137
|
/** Targets with a Claude Code plugin-marketplace model, and where the
|
|
137
138
|
* declaration lands. A target absent here has no plugin model (e.g.
|
|
138
139
|
* agents-md, a flat-file convention with no marketplace concept) → Praxis
|
|
139
|
-
* emits nothing for it.
|
|
140
|
+
* emits nothing for it. Codex marketplace delivery is handled separately. */
|
|
140
141
|
const PLUGIN_EMITTERS = {
|
|
141
142
|
"claude-code": { path: ".claude/settings.json" },
|
|
142
143
|
};
|
|
143
144
|
/** Build the emit plan from a manifest: the file operations needed to install
|
|
144
|
-
* the selected methodology for each target.
|
|
145
|
-
|
|
145
|
+
* the selected methodology for each target. `cwd` resolves any project-local
|
|
146
|
+
* (`./`-prefixed) packages the manifest names; defaults to process.cwd(). */
|
|
147
|
+
export function planEmit(manifest, cwd = process.cwd()) {
|
|
146
148
|
// Validate the package set and resolve requires/conflicts up front (D20/D21):
|
|
147
149
|
// an unknown package or unmet dependency fails loudly here, not silently later.
|
|
148
|
-
const packages = resolvePackages(manifest.packages, manifest.stacks ?? []);
|
|
150
|
+
const packages = resolvePackages(manifest.packages, manifest.stacks ?? [], cwd);
|
|
149
151
|
const rulesPackages = packages.filter((p) => p.provides.includes("rules"));
|
|
150
152
|
const permissionPackages = packages.filter((p) => p.provides.includes("permissions"));
|
|
151
153
|
const commandPackages = packages.filter((p) => p.provides.includes("commands"));
|
|
152
154
|
const pluginPackages = packages.filter((p) => p.provides.includes("plugins"));
|
|
153
155
|
const ops = [];
|
|
156
|
+
const codexSelected = manifest.targets.includes("codex");
|
|
154
157
|
for (const target of manifest.targets) {
|
|
155
158
|
// Prose rules — delivery (owned vs block) is the target's; `provides` decides
|
|
156
159
|
// which packages contribute. `loadPackageSource` is guaranteed by `provides`.
|
|
157
|
-
const sources = rulesPackages.map((p) => ({ pkg: p.name, source: loadPackageSource(p.
|
|
158
|
-
if (sources.length > 0) {
|
|
160
|
+
const sources = rulesPackages.map((p) => ({ pkg: p.name, source: loadPackageSource(p.dir) ?? "" }));
|
|
161
|
+
if (sources.length > 0 && !(target === "agents-md" && codexSelected)) {
|
|
159
162
|
if (TARGET_DELIVERY[target] === "owned") {
|
|
160
163
|
for (const { pkg, source } of sources) {
|
|
161
164
|
ops.push({
|
|
@@ -183,7 +186,7 @@ export function planEmit(manifest) {
|
|
|
183
186
|
if (permEmitter && permissionPackages.length > 0) {
|
|
184
187
|
rules = { allow: [], ask: [], deny: [] };
|
|
185
188
|
for (const p of permissionPackages) {
|
|
186
|
-
const policy = loadPolicy(p.
|
|
189
|
+
const policy = loadPolicy(p.dir);
|
|
187
190
|
if (!policy)
|
|
188
191
|
continue;
|
|
189
192
|
const r = permEmitter.render(policy);
|
|
@@ -200,7 +203,7 @@ export function planEmit(manifest) {
|
|
|
200
203
|
const marketplaces = [];
|
|
201
204
|
const enable = [];
|
|
202
205
|
for (const p of pluginPackages) {
|
|
203
|
-
const block = loadPluginsBlock(p.
|
|
206
|
+
const block = loadPluginsBlock(p.dir);
|
|
204
207
|
if (!block || !block.targets.includes(target))
|
|
205
208
|
continue;
|
|
206
209
|
if (!marketplaces.some((m) => m.name === block.marketplace.name)) {
|
|
@@ -217,6 +220,62 @@ export function planEmit(manifest) {
|
|
|
217
220
|
if (settingsPath && (rules || plugins)) {
|
|
218
221
|
ops.push({ kind: "settings", target, path: settingsPath, rules, plugins });
|
|
219
222
|
}
|
|
223
|
+
if (target === "codex") {
|
|
224
|
+
const policies = permissionPackages.map((pkg) => loadPolicy(pkg.dir)).filter((p) => Boolean(p));
|
|
225
|
+
if (policies.length > 0) {
|
|
226
|
+
ops.push({ kind: "codex-config", target, path: ".codex/config.toml", enabled: true });
|
|
227
|
+
const combined = { allow: [], ask: [], deny: [] };
|
|
228
|
+
for (const policy of policies) {
|
|
229
|
+
for (const bucket of BUCKETS) {
|
|
230
|
+
for (const capability of policy[bucket]) {
|
|
231
|
+
if (!combined[bucket].includes(capability))
|
|
232
|
+
combined[bucket].push(capability);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
ops.push({
|
|
237
|
+
kind: "owned",
|
|
238
|
+
target,
|
|
239
|
+
path: ".codex/rules/praxis-safe-permissions.rules",
|
|
240
|
+
content: renderCodexRules(combined),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
const codexPlugins = [];
|
|
244
|
+
for (const pkg of pluginPackages) {
|
|
245
|
+
const block = loadPluginsBlock(pkg.dir);
|
|
246
|
+
if (!block?.codex)
|
|
247
|
+
continue;
|
|
248
|
+
const source = block.codex.subdir
|
|
249
|
+
? {
|
|
250
|
+
source: "git-subdir",
|
|
251
|
+
url: `https://github.com/${block.marketplace.source.repo}.git`,
|
|
252
|
+
path: block.codex.subdir.startsWith("./") ? block.codex.subdir : `./${block.codex.subdir}`,
|
|
253
|
+
}
|
|
254
|
+
: { source: "url", url: `https://github.com/${block.marketplace.source.repo}.git` };
|
|
255
|
+
if (block.marketplace.source.ref)
|
|
256
|
+
source.ref = block.marketplace.source.ref;
|
|
257
|
+
if (block.marketplace.source.sha)
|
|
258
|
+
source.sha = block.marketplace.source.sha;
|
|
259
|
+
codexPlugins.push({
|
|
260
|
+
name: block.codex.name,
|
|
261
|
+
source,
|
|
262
|
+
policy: {
|
|
263
|
+
installation: block.codex.installation,
|
|
264
|
+
authentication: block.codex.authentication,
|
|
265
|
+
},
|
|
266
|
+
category: block.codex.category,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
if (codexPlugins.length > 0) {
|
|
270
|
+
ops.push({
|
|
271
|
+
kind: "codex-marketplace",
|
|
272
|
+
target,
|
|
273
|
+
path: CODEX_MARKETPLACE_PATH,
|
|
274
|
+
statePath: CODEX_MARKETPLACE_STATE_PATH,
|
|
275
|
+
plugins: codexPlugins,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
220
279
|
// Slash commands (third artifact kind, docs/wiki/packages-and-emit.md "provides"). One owned file per
|
|
221
280
|
// command, prefixed so it's identifiable as Praxis-managed; targets with no
|
|
222
281
|
// command model are a no-op.
|
|
@@ -229,13 +288,13 @@ export function planEmit(manifest) {
|
|
|
229
288
|
// to any package name.
|
|
230
289
|
const onboardingDelegations = packages
|
|
231
290
|
.filter((p) => p.onboarding)
|
|
232
|
-
.map((p) => `-
|
|
291
|
+
.map((p) => `- \`${target === "codex" ? "$" : "/"}${p.onboarding.command}\` — ${p.onboarding.summary}`)
|
|
233
292
|
.join("\n");
|
|
234
293
|
const BOOTSTRAP_MARKER = "<!-- praxis:bootstrap-delegations -->";
|
|
235
294
|
const commandDir = COMMAND_DIR[target];
|
|
236
295
|
if (commandDir) {
|
|
237
296
|
for (const pkg of commandPackages) {
|
|
238
|
-
for (const { name, content } of loadCommandSources(pkg.
|
|
297
|
+
for (const { name, content } of loadCommandSources(pkg.dir)) {
|
|
239
298
|
const emitted = content.includes(BOOTSTRAP_MARKER)
|
|
240
299
|
? content.replace(BOOTSTRAP_MARKER, onboardingDelegations)
|
|
241
300
|
: content;
|
|
@@ -243,7 +302,22 @@ export function planEmit(manifest) {
|
|
|
243
302
|
kind: "owned",
|
|
244
303
|
target,
|
|
245
304
|
path: `${commandDir}/praxis-${name}.md`,
|
|
246
|
-
content: `${emitted}\n`,
|
|
305
|
+
content: `${renderNeutralSyntax(emitted, target)}\n`,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if (target === "codex") {
|
|
311
|
+
for (const pkg of commandPackages) {
|
|
312
|
+
for (const { name, content } of loadCommandSources(pkg.dir)) {
|
|
313
|
+
const emitted = content.includes(BOOTSTRAP_MARKER)
|
|
314
|
+
? content.replace(BOOTSTRAP_MARKER, onboardingDelegations)
|
|
315
|
+
: content;
|
|
316
|
+
ops.push({
|
|
317
|
+
kind: "owned",
|
|
318
|
+
target,
|
|
319
|
+
path: `.agents/skills/praxis-${name}/SKILL.md`,
|
|
320
|
+
content: renderCodexSkill(name, emitted),
|
|
247
321
|
});
|
|
248
322
|
}
|
|
249
323
|
}
|
|
@@ -266,7 +340,7 @@ function countLines(text) {
|
|
|
266
340
|
*
|
|
267
341
|
* Counts the claude-code target's owned `.claude/rules/*` files (one per rules
|
|
268
342
|
* package). If claude-code isn't a manifest target, falls back to the
|
|
269
|
-
* agents-md managed block content, one artifact per block, so the
|
|
343
|
+
* Codex/agents-md managed block content, one artifact per block, so the targets'
|
|
270
344
|
* shared source is never double-counted. Commands, permissions/plugins JSON,
|
|
271
345
|
* and the wiki are never counted — none are loaded at session start.
|
|
272
346
|
*
|
|
@@ -274,8 +348,8 @@ function countLines(text) {
|
|
|
274
348
|
* unknown package) — callers in check mode should catch and omit the line
|
|
275
349
|
* rather than let it mask the sync error (D40's degrade-by-omission model).
|
|
276
350
|
*/
|
|
277
|
-
export function computeMethodologySize(manifest) {
|
|
278
|
-
const ops = planEmit(manifest);
|
|
351
|
+
export function computeMethodologySize(manifest, cwd = process.cwd()) {
|
|
352
|
+
const ops = planEmit(manifest, cwd);
|
|
279
353
|
const claudeRuleFiles = ops.filter((op) => op.kind === "owned" && op.target === "claude-code" && op.path.startsWith(".claude/rules/"));
|
|
280
354
|
if (claudeRuleFiles.length > 0) {
|
|
281
355
|
return {
|
|
@@ -283,7 +357,7 @@ export function computeMethodologySize(manifest) {
|
|
|
283
357
|
fileCount: claudeRuleFiles.length,
|
|
284
358
|
};
|
|
285
359
|
}
|
|
286
|
-
const agentsBlock = ops.find((op) => op.kind === "block" && op.target === "agents-md");
|
|
360
|
+
const agentsBlock = ops.find((op) => op.kind === "block" && (op.target === "codex" || op.target === "agents-md"));
|
|
287
361
|
if (agentsBlock) {
|
|
288
362
|
const blocks = Object.values(agentsBlock.blocks);
|
|
289
363
|
return {
|
|
@@ -308,6 +382,11 @@ export function applyOp(op, existing = "") {
|
|
|
308
382
|
desired.plugins = op.plugins;
|
|
309
383
|
return reconcileSettings(existing, desired);
|
|
310
384
|
}
|
|
385
|
+
if (op.kind === "codex-config")
|
|
386
|
+
return reconcileCodexConfig(existing, op.enabled);
|
|
387
|
+
if (op.kind === "codex-marketplace") {
|
|
388
|
+
throw new Error("Codex marketplace operations require their ownership sidecar and must be applied by sync.");
|
|
389
|
+
}
|
|
311
390
|
return reconcile(existing, op.blocks);
|
|
312
391
|
}
|
|
313
392
|
//# sourceMappingURL=emit.js.map
|
package/dist/emit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../src/emit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../src/emit.ts"],"names":[],"mappings":"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"}
|
package/dist/init.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { type SyncReport } from "./sync.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* `init` — the first-run install (docs/wiki/interaction-model.md, D17). Minimal by design:
|
|
5
5
|
* detect context → propose a default manifest → preview the emit → write
|
|
6
|
-
* `praxis.yaml` and apply.
|
|
7
|
-
*
|
|
6
|
+
* `praxis.yaml` and apply. Stack/target selection and filesystem/PATH detection
|
|
7
|
+
* stay here as testable logic; prompts remain in program.ts.
|
|
8
8
|
*
|
|
9
9
|
* This module is pure logic; the interactive prompts live in src/program.ts.
|
|
10
10
|
*/
|
|
@@ -12,18 +12,27 @@ export interface InitContext {
|
|
|
12
12
|
hasGit: boolean;
|
|
13
13
|
hasClaudeMd: boolean;
|
|
14
14
|
hasAgentsMd: boolean;
|
|
15
|
+
hasClaudeSharedProject: boolean;
|
|
16
|
+
hasAgentsSharedProject: boolean;
|
|
17
|
+
/** Emit targets inferred from project artifacts and installed CLIs — for
|
|
18
|
+
* interactive suggestion only; a PATH-installed CLI is a per-machine signal. */
|
|
19
|
+
detectedTargets: Target[];
|
|
20
|
+
/** Emit targets inferred from repo artifacts alone (no PATH probing) — the
|
|
21
|
+
* reproducible subset, used to default non-interactive (`--yes`) installs
|
|
22
|
+
* so the same repo yields the same manifest regardless of the machine. */
|
|
23
|
+
detectedTargetsFromArtifacts: Target[];
|
|
15
24
|
/** A `praxis.yaml` already exists — init should defer to `sync`. */
|
|
16
25
|
manifestExists: boolean;
|
|
17
26
|
/** Stacks detected from project files. Empty for a bare/unrecognised repo. */
|
|
18
27
|
detectedStacks: Stack[];
|
|
19
28
|
}
|
|
20
|
-
export declare function detectContext(cwd: string): InitContext;
|
|
29
|
+
export declare function detectContext(cwd: string, pathValue?: string): InitContext;
|
|
21
30
|
/**
|
|
22
31
|
* The default manifest for a fresh repo: all Layer 1 packages + Layer 2 packages
|
|
23
32
|
* for the detected stacks. Data-driven from availablePackages(); no hardcoded list.
|
|
24
|
-
*
|
|
33
|
+
* Uses detected targets, retaining the legacy Claude + generic fallback.
|
|
25
34
|
*/
|
|
26
|
-
export declare function defaultManifest(ctx: InitContext): Manifest;
|
|
35
|
+
export declare function defaultManifest(ctx: InitContext, targets?: Target[]): Manifest;
|
|
27
36
|
/**
|
|
28
37
|
* Build a manifest from explicit selections (Customize branch). Pure — no I/O, no prompts.
|
|
29
38
|
* Omits `stacks` when the array is empty.
|
|
@@ -57,6 +66,7 @@ export declare const SETUP_SENTINEL = ".praxis-setup-pending";
|
|
|
57
66
|
* when `!ctx.hasClaudeMd && manifest.targets.includes("claude-code")`.
|
|
58
67
|
*/
|
|
59
68
|
export declare function writeSetupSentinel(cwd: string): void;
|
|
69
|
+
export declare function needsSetupSentinel(ctx: Pick<InitContext, "hasClaudeMd" | "hasAgentsMd"> & Partial<Pick<InitContext, "hasClaudeSharedProject" | "hasAgentsSharedProject">>, manifest: Manifest): boolean;
|
|
60
70
|
/** Write `praxis.yaml`, apply the methodology files, and — for a fresh
|
|
61
71
|
* Claude Code repo with no CLAUDE.md — write the onboarding sentinel (D14). */
|
|
62
|
-
export declare function applyInit(cwd: string, manifest: Manifest, ctx: Pick<InitContext, "hasClaudeMd">): SyncReport;
|
|
72
|
+
export declare function applyInit(cwd: string, manifest: Manifest, ctx: Pick<InitContext, "hasClaudeMd" | "hasAgentsMd"> & Partial<Pick<InitContext, "hasClaudeSharedProject" | "hasAgentsSharedProject">>): SyncReport;
|
package/dist/init.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
2
|
+
import { delimiter, join } from "node:path";
|
|
3
3
|
import { mkdirSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { dirname } from "node:path";
|
|
5
5
|
import { METHODOLOGY_VERSION, STACKS } from "./manifest.js";
|
|
6
6
|
import { availablePackages } from "./packages.js";
|
|
7
|
+
import { hasSharedProjectBlock } from "./shared-instructions.js";
|
|
7
8
|
import { applyManifest } from "./sync.js";
|
|
8
9
|
const MANIFEST_FILE = "praxis.yaml";
|
|
9
|
-
|
|
10
|
+
function executableOnPath(name, pathValue) {
|
|
11
|
+
const suffixes = process.platform === "win32" ? ["", ".exe", ".cmd", ".bat"] : [""];
|
|
12
|
+
return pathValue.split(delimiter).some((dir) => suffixes.some((suffix) => dir.length > 0 && existsSync(join(dir, `${name}${suffix}`))));
|
|
13
|
+
}
|
|
14
|
+
export function detectContext(cwd, pathValue = process.env.PATH ?? "") {
|
|
10
15
|
const has = (rel) => existsSync(join(cwd, rel));
|
|
11
16
|
const stacks = [];
|
|
12
17
|
// python-backend: pyproject.toml, requirements.txt, or setup.py
|
|
@@ -31,10 +36,35 @@ export function detectContext(cwd) {
|
|
|
31
36
|
}
|
|
32
37
|
// Return in canonical STACKS order for determinism
|
|
33
38
|
const ordered = STACKS.filter((s) => stacks.includes(s));
|
|
39
|
+
const hasClaudeArtifacts = has("CLAUDE.md") || has(".claude");
|
|
40
|
+
const hasCodexArtifacts = has(".codex") || has(".agents/skills");
|
|
41
|
+
const hasAgentsArtifacts = has("AGENTS.md");
|
|
42
|
+
const detectedTargetsFromArtifacts = [];
|
|
43
|
+
if (hasClaudeArtifacts)
|
|
44
|
+
detectedTargetsFromArtifacts.push("claude-code");
|
|
45
|
+
if (hasCodexArtifacts)
|
|
46
|
+
detectedTargetsFromArtifacts.push("codex");
|
|
47
|
+
if (hasAgentsArtifacts)
|
|
48
|
+
detectedTargetsFromArtifacts.push("agents-md");
|
|
49
|
+
const detectedTargets = [];
|
|
50
|
+
if (hasClaudeArtifacts || executableOnPath("claude", pathValue))
|
|
51
|
+
detectedTargets.push("claude-code");
|
|
52
|
+
if (hasCodexArtifacts || executableOnPath("codex", pathValue))
|
|
53
|
+
detectedTargets.push("codex");
|
|
54
|
+
if (hasAgentsArtifacts)
|
|
55
|
+
detectedTargets.push("agents-md");
|
|
34
56
|
return {
|
|
35
57
|
hasGit: has(".git"),
|
|
36
58
|
hasClaudeMd: has("CLAUDE.md"),
|
|
37
59
|
hasAgentsMd: has("AGENTS.md"),
|
|
60
|
+
hasClaudeSharedProject: has("CLAUDE.md")
|
|
61
|
+
? hasSharedProjectBlock(readFileSync(join(cwd, "CLAUDE.md"), "utf8"))
|
|
62
|
+
: false,
|
|
63
|
+
hasAgentsSharedProject: has("AGENTS.md")
|
|
64
|
+
? hasSharedProjectBlock(readFileSync(join(cwd, "AGENTS.md"), "utf8"))
|
|
65
|
+
: false,
|
|
66
|
+
detectedTargets,
|
|
67
|
+
detectedTargetsFromArtifacts,
|
|
38
68
|
manifestExists: has(MANIFEST_FILE),
|
|
39
69
|
detectedStacks: ordered,
|
|
40
70
|
};
|
|
@@ -42,9 +72,9 @@ export function detectContext(cwd) {
|
|
|
42
72
|
/**
|
|
43
73
|
* The default manifest for a fresh repo: all Layer 1 packages + Layer 2 packages
|
|
44
74
|
* for the detected stacks. Data-driven from availablePackages(); no hardcoded list.
|
|
45
|
-
*
|
|
75
|
+
* Uses detected targets, retaining the legacy Claude + generic fallback.
|
|
46
76
|
*/
|
|
47
|
-
export function defaultManifest(ctx) {
|
|
77
|
+
export function defaultManifest(ctx, targets) {
|
|
48
78
|
const all = availablePackages();
|
|
49
79
|
const detectedSet = new Set(ctx.detectedStacks);
|
|
50
80
|
const layer1 = [];
|
|
@@ -63,7 +93,8 @@ export function defaultManifest(ctx) {
|
|
|
63
93
|
const manifest = {
|
|
64
94
|
version: 1,
|
|
65
95
|
methodology: METHODOLOGY_VERSION,
|
|
66
|
-
targets:
|
|
96
|
+
targets: targets ??
|
|
97
|
+
(ctx.detectedTargetsFromArtifacts.length > 0 ? ctx.detectedTargetsFromArtifacts : ["claude-code", "agents-md"]),
|
|
67
98
|
packages: [...layer1, ...layer2],
|
|
68
99
|
};
|
|
69
100
|
if (ctx.detectedStacks.length > 0) {
|
|
@@ -111,7 +142,7 @@ export function previewInit(cwd) {
|
|
|
111
142
|
manifest,
|
|
112
143
|
manifestYaml: renderManifestYaml(manifest),
|
|
113
144
|
report: applyManifest(manifest, cwd, false),
|
|
114
|
-
willWriteSentinel:
|
|
145
|
+
willWriteSentinel: needsSetupSentinel(ctx, manifest),
|
|
115
146
|
};
|
|
116
147
|
}
|
|
117
148
|
/** The transient sentinel written on fresh installs (D14). The onboarding bootstrap
|
|
@@ -121,13 +152,13 @@ export const SETUP_SENTINEL = ".praxis-setup-pending";
|
|
|
121
152
|
const SENTINEL_CONTENT = `# .praxis-setup-pending
|
|
122
153
|
#
|
|
123
154
|
# This file was written by \`praxis init\` to signal that project-owned sections
|
|
124
|
-
# of
|
|
155
|
+
# of the selected agent instruction surfaces haven't been authored yet.
|
|
125
156
|
#
|
|
126
157
|
# At the start of the next session your AI coding agent will offer to run
|
|
127
|
-
#
|
|
158
|
+
# the Praxis onboarding workflow, which guides you through writing build/run/test commands,
|
|
128
159
|
# project layout, conventions, and always-do rules for this repo.
|
|
129
160
|
#
|
|
130
|
-
#
|
|
161
|
+
# The onboarding workflow deletes this file when it finishes — making onboarding
|
|
131
162
|
# one-shot. You can also delete this file yourself to skip onboarding.
|
|
132
163
|
`;
|
|
133
164
|
/**
|
|
@@ -138,6 +169,12 @@ const SENTINEL_CONTENT = `# .praxis-setup-pending
|
|
|
138
169
|
export function writeSetupSentinel(cwd) {
|
|
139
170
|
writeFileSync(join(cwd, SETUP_SENTINEL), SENTINEL_CONTENT, "utf8");
|
|
140
171
|
}
|
|
172
|
+
export function needsSetupSentinel(ctx, manifest) {
|
|
173
|
+
const dualFirstClass = manifest.targets.includes("claude-code") && manifest.targets.includes("codex");
|
|
174
|
+
return ((manifest.targets.includes("claude-code") && !ctx.hasClaudeMd) ||
|
|
175
|
+
(manifest.targets.includes("codex") && !ctx.hasAgentsMd) ||
|
|
176
|
+
(dualFirstClass && (!ctx.hasClaudeSharedProject || !ctx.hasAgentsSharedProject)));
|
|
177
|
+
}
|
|
141
178
|
/** Write `praxis.yaml`, apply the methodology files, and — for a fresh
|
|
142
179
|
* Claude Code repo with no CLAUDE.md — write the onboarding sentinel (D14). */
|
|
143
180
|
export function applyInit(cwd, manifest, ctx) {
|
|
@@ -145,7 +182,7 @@ export function applyInit(cwd, manifest, ctx) {
|
|
|
145
182
|
mkdirSync(dirname(path), { recursive: true });
|
|
146
183
|
writeFileSync(path, renderManifestYaml(manifest), "utf8");
|
|
147
184
|
const report = applyManifest(manifest, cwd, true);
|
|
148
|
-
if (
|
|
185
|
+
if (needsSetupSentinel(ctx, manifest)) {
|
|
149
186
|
writeSetupSentinel(cwd);
|
|
150
187
|
}
|
|
151
188
|
return report;
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { z } from "zod";
|
|
|
9
9
|
* a clear validation error. The lists grow as emitters and stacks land.
|
|
10
10
|
*/
|
|
11
11
|
export declare const METHODOLOGY_VERSION = "0.1.0";
|
|
12
|
-
declare const TARGETS: readonly ["claude-code", "agents-md"];
|
|
12
|
+
export declare const TARGETS: readonly ["claude-code", "codex", "agents-md"];
|
|
13
13
|
export declare const STACKS: readonly ["python-backend", "node", "react"];
|
|
14
14
|
export declare const manifestSchema: z.ZodObject<{
|
|
15
15
|
version: z.ZodLiteral<1>;
|
|
@@ -21,6 +21,7 @@ export declare const manifestSchema: z.ZodObject<{
|
|
|
21
21
|
}>>>;
|
|
22
22
|
targets: z.ZodArray<z.ZodEnum<{
|
|
23
23
|
"claude-code": "claude-code";
|
|
24
|
+
codex: "codex";
|
|
24
25
|
"agents-md": "agents-md";
|
|
25
26
|
}>>;
|
|
26
27
|
packages: z.ZodArray<z.ZodString>;
|
|
@@ -33,4 +34,3 @@ export type Stack = (typeof STACKS)[number];
|
|
|
33
34
|
export declare function parseManifest(yamlText: string): Manifest;
|
|
34
35
|
/** Read and validate the manifest at `path`. */
|
|
35
36
|
export declare function loadManifest(path: string): Manifest;
|
|
36
|
-
export {};
|
package/dist/manifest.js
CHANGED
|
@@ -14,7 +14,7 @@ import { z } from "zod";
|
|
|
14
14
|
// manifests with it; `sync` offers to bump a repo to it (D6).
|
|
15
15
|
export const METHODOLOGY_VERSION = "0.1.0";
|
|
16
16
|
// Emit targets with an implemented emitter. Grows as emitters are added.
|
|
17
|
-
const TARGETS = ["claude-code", "agents-md"];
|
|
17
|
+
export const TARGETS = ["claude-code", "codex", "agents-md"];
|
|
18
18
|
// Stacks Praxis knows. Grows as Layer 2 stacks are added.
|
|
19
19
|
export const STACKS = ["python-backend", "node", "react"];
|
|
20
20
|
export const manifestSchema = z.strictObject({
|