@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.
Files changed (54) hide show
  1. package/README.md +26 -19
  2. package/dist/codex-marketplace.d.ts +19 -0
  3. package/dist/codex-marketplace.js +113 -0
  4. package/dist/codex-marketplace.js.map +1 -0
  5. package/dist/codex-security.d.ts +11 -0
  6. package/dist/codex-security.js +144 -0
  7. package/dist/codex-security.js.map +1 -0
  8. package/dist/emit.d.ts +24 -10
  9. package/dist/emit.js +149 -70
  10. package/dist/emit.js.map +1 -1
  11. package/dist/init.d.ts +16 -6
  12. package/dist/init.js +47 -10
  13. package/dist/init.js.map +1 -1
  14. package/dist/manifest.d.ts +2 -2
  15. package/dist/manifest.js +1 -1
  16. package/dist/manifest.js.map +1 -1
  17. package/dist/packages.d.ts +20 -2
  18. package/dist/packages.js +54 -5
  19. package/dist/packages.js.map +1 -1
  20. package/dist/permissions.d.ts +17 -2
  21. package/dist/permissions.js +5 -14
  22. package/dist/permissions.js.map +1 -1
  23. package/dist/plugins.d.ts +16 -2
  24. package/dist/plugins.js +15 -15
  25. package/dist/plugins.js.map +1 -1
  26. package/dist/program.d.ts +3 -0
  27. package/dist/program.js +77 -31
  28. package/dist/program.js.map +1 -1
  29. package/dist/shared-instructions.d.ts +21 -0
  30. package/dist/shared-instructions.js +63 -0
  31. package/dist/shared-instructions.js.map +1 -0
  32. package/dist/sync.js +103 -7
  33. package/dist/sync.js.map +1 -1
  34. package/package.json +1 -1
  35. package/packages/external/ponytail/plugins.yaml +4 -1
  36. package/packages/layer1/capture-codebase-patterns/commands/capture-codebase-patterns.md +68 -0
  37. package/packages/layer1/capture-codebase-patterns/package.yaml +14 -0
  38. package/packages/layer1/instruction-upkeep/commands/instructions.md +14 -5
  39. package/packages/layer1/instruction-upkeep/rules.md +7 -3
  40. package/packages/layer1/onboarding/commands/onboard.md +42 -24
  41. package/packages/layer1/onboarding/rules.md +4 -4
  42. package/packages/layer1/safe-permissions/permissions.yaml +2 -2
  43. package/packages/layer1/session-handoff/commands/handoff.md +5 -5
  44. package/packages/layer1/session-handoff/rules.md +2 -2
  45. package/packages/layer1/upkeep/commands/upkeep.md +8 -5
  46. package/packages/layer1/upkeep/rules.md +8 -4
  47. package/packages/layer1/wiki-memory/commands/wiki.md +6 -6
  48. package/packages/layer1/wiki-memory/rules.md +4 -4
  49. package/packages/layer2/node-recipes/rules.md +18 -19
  50. package/packages/layer2/node-testing/rules.md +21 -26
  51. package/packages/layer2/python-backend-recipes/rules.md +18 -22
  52. package/packages/layer2/python-testing/rules.md +20 -26
  53. package/packages/layer2/react-components/rules.md +31 -26
  54. 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 { fileURLToPath } from "node:url";
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
- * Layer 1 emit (CLAUDE.md non-negotiable "tool-neutral by construction";
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
- export function loadPackageSource(pkg) {
43
- const root = fileURLToPath(PACKAGES_DIR);
44
- for (const entry of readdirSync(root, { withFileTypes: true })) {
45
- if (!entry.isDirectory())
46
- continue;
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 renderForTarget(source, _target) {
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
- * packages/<layer>/<pkg>/commands/*.md — mirrors loadPackageSource. */
60
- export function loadCommandSources(pkg) {
61
- const root = fileURLToPath(PACKAGES_DIR);
62
- for (const entry of readdirSync(root, { withFileTypes: true })) {
63
- if (!entry.isDirectory())
64
- continue;
65
- const dir = join(root, entry.name, pkg, "commands");
66
- if (!existsSync(dir))
67
- continue;
68
- return readdirSync(dir, { withFileTypes: true })
69
- .filter((f) => f.isFile() && f.name.endsWith(".md"))
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 with a slash-command model, and where commands land. A target absent
78
- * here has no command model Praxis emits nothing for it (a no-op, never a
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 Praxis emits nothing for it
130
- * (a no-op, never a fabricated file). Claude Code first (D19). Shares a path
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. Claude Code only, today. */
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
- export function planEmit(manifest) {
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.name) ?? "" }));
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.name);
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.name);
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) => `- \`/${p.onboarding.command}\` — ${p.onboarding.summary}`)
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.name)) {
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 two targets'
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. The richer "Customize" wizard is deferred until Layer 2
7
- * gives real choices (one package, two targets today — nothing to pick yet).
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
- * Emits to both supported targets.
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
- export function detectContext(cwd) {
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
- * Emits to both supported targets.
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: ["claude-code", "agents-md"],
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: !ctx.hasClaudeMd && manifest.targets.includes("claude-code"),
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 CLAUDE.md haven't been authored yet for this fresh install.
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
- # /praxis-onboard, which guides you through writing the build/run/test commands,
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
- # /praxis-onboard deletes this file when it finishes — making onboarding
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 (!ctx.hasClaudeMd && manifest.targets.includes("claude-code")) {
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":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -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({