@aacombarro89/praxis 0.1.7 → 0.1.9
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 +34 -20
- 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 +38 -2
- package/dist/emit.js +167 -13
- 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 +1 -1
- package/dist/plugins.d.ts +14 -0
- package/dist/plugins.js +9 -0
- package/dist/plugins.js.map +1 -1
- package/dist/program.d.ts +8 -0
- package/dist/program.js +93 -30
- 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.d.ts +8 -1
- package/dist/sync.js +210 -7
- package/dist/sync.js.map +1 -1
- package/package.json +1 -1
- package/packages/external/ponytail/plugins.yaml +4 -1
- package/packages/layer1/instruction-upkeep/commands/instructions.md +14 -5
- package/packages/layer1/instruction-upkeep/rules.md +11 -23
- package/packages/layer1/onboarding/commands/onboard.md +42 -24
- package/packages/layer1/onboarding/rules.md +6 -10
- 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 +10 -57
- package/packages/layer1/upkeep/commands/upkeep.md +8 -5
- package/packages/layer1/upkeep/rules.md +12 -15
- package/packages/layer1/wiki-memory/commands/wiki.md +6 -6
- package/packages/layer1/wiki-memory/rules.md +11 -49
- package/packages/layer2/node-recipes/rules.md +4 -3
- package/packages/layer2/node-testing/rules.md +4 -0
- package/packages/layer2/python-backend-recipes/rules.md +4 -4
- package/packages/layer2/python-testing/rules.md +4 -0
- package/packages/layer2/react-components/rules.md +4 -0
- package/packages/layer2/react-testing/rules.md +4 -0
package/dist/emit.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { parse as parseYaml } from "yaml";
|
|
4
5
|
import { reconcile } from "./merge.js";
|
|
5
6
|
import { BUCKETS, reconcileSettings, } from "./merge-json.js";
|
|
6
7
|
import { resolvePackages } from "./packages.js";
|
|
7
8
|
import { loadPolicy } from "./permissions.js";
|
|
8
9
|
import { loadPluginsBlock } from "./plugins.js";
|
|
10
|
+
import { reconcileCodexConfig, renderCodexRules } from "./codex-security.js";
|
|
11
|
+
import { CODEX_MARKETPLACE_PATH, CODEX_MARKETPLACE_STATE_PATH, } from "./codex-marketplace.js";
|
|
9
12
|
/**
|
|
10
13
|
* Layer 1 emit (CLAUDE.md non-negotiable "tool-neutral by construction";
|
|
11
14
|
* docs/wiki/merge-engine.md / docs/wiki/emitters.md, decisions D7/D13). The methodology source is **singular
|
|
@@ -28,10 +31,15 @@ const PACKAGES_DIR = new URL("../packages/", import.meta.url);
|
|
|
28
31
|
// Where each target's methodology lives, and how it is delivered.
|
|
29
32
|
const TARGET_DELIVERY = {
|
|
30
33
|
"claude-code": "owned",
|
|
34
|
+
codex: "block",
|
|
31
35
|
"agents-md": "block",
|
|
32
36
|
};
|
|
33
|
-
// Block-delivered targets each own a managed block in one flat file.
|
|
34
|
-
|
|
37
|
+
// Block-delivered targets each own a managed block in one flat file. Exported
|
|
38
|
+
// so sync.ts can enumerate the universe of block-owned files for orphan
|
|
39
|
+
// pruning even when the current manifest emits zero blocks for one (D46) —
|
|
40
|
+
// planEmit's ops alone wouldn't carry that path in that case.
|
|
41
|
+
export const BLOCK_FILE = {
|
|
42
|
+
codex: "AGENTS.md",
|
|
35
43
|
"agents-md": "AGENTS.md",
|
|
36
44
|
};
|
|
37
45
|
/** The neutral methodology source for a content package, or undefined if the
|
|
@@ -49,9 +57,38 @@ export function loadPackageSource(pkg) {
|
|
|
49
57
|
}
|
|
50
58
|
/** Translate neutral source for a specific target. The seam for per-tool
|
|
51
59
|
* framing; Layer 1 prose is identical across tools today. */
|
|
52
|
-
function
|
|
60
|
+
function renderNeutralSyntax(source, target) {
|
|
61
|
+
return source
|
|
62
|
+
.replace(/\{\{workflow:([^}]+)\}\}/g, (_match, name) => `${target === "codex" ? "$" : "/"}${name}`)
|
|
63
|
+
.replace(/\{\{shell:([^}]+)\}\}/g, (_match, command) => target === "codex" ? `run \`${command}\`` : `!\`${command}\``)
|
|
64
|
+
.replaceAll("{{arguments}}", target === "codex" ? "the arguments supplied with this skill" : "$ARGUMENTS");
|
|
65
|
+
}
|
|
66
|
+
function renderForTarget(source, target) {
|
|
67
|
+
source = renderNeutralSyntax(source, target);
|
|
68
|
+
if (target === "codex") {
|
|
69
|
+
const match = source.match(/^---\n([\s\S]*?)\n---\n?/);
|
|
70
|
+
if (match) {
|
|
71
|
+
const frontmatter = parseYaml(match[1]);
|
|
72
|
+
if (Array.isArray(frontmatter?.paths) && frontmatter.paths.every((path) => typeof path === "string")) {
|
|
73
|
+
const paths = frontmatter.paths.map((path) => `\`${path}\``).join(", ");
|
|
74
|
+
return `Applies only when working on files matching: ${paths}.\n\n${source.slice(match[0].length).trimStart()}`;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
53
78
|
return source;
|
|
54
79
|
}
|
|
80
|
+
function renderCodexSkill(name, source) {
|
|
81
|
+
source = renderNeutralSyntax(source, "codex");
|
|
82
|
+
const match = source.match(/^---\n([\s\S]*?)\n---\n?/);
|
|
83
|
+
const descriptionMatch = match?.[1]?.match(/^description:\s*(.+)$/m);
|
|
84
|
+
const description = descriptionMatch?.[1]?.trim() ?? `Run the Praxis ${name} workflow.`;
|
|
85
|
+
let body = match ? source.slice(match[0].length).trimStart() : source;
|
|
86
|
+
body = body
|
|
87
|
+
.replaceAll("/praxis-", "$praxis-")
|
|
88
|
+
.replaceAll("$ARGUMENTS", "the arguments supplied with this skill")
|
|
89
|
+
.replace(/^\s*- ([^:]+): !`([^`]+)`$/gm, "- $1: run `$2`");
|
|
90
|
+
return `---\nname: praxis-${name}\ndescription: ${JSON.stringify(description)}\n---\n\n${body.trimEnd()}\n`;
|
|
91
|
+
}
|
|
55
92
|
/** A content package's commands, or [] if it has none. Scans
|
|
56
93
|
* packages/<layer>/<pkg>/commands/*.md — mirrors loadPackageSource. */
|
|
57
94
|
export function loadCommandSources(pkg) {
|
|
@@ -71,10 +108,8 @@ export function loadCommandSources(pkg) {
|
|
|
71
108
|
}
|
|
72
109
|
return [];
|
|
73
110
|
}
|
|
74
|
-
/** Targets
|
|
75
|
-
*
|
|
76
|
-
* fabricated file). Claude Code first (D19's "no permission model → no-op",
|
|
77
|
-
* same shape for commands). */
|
|
111
|
+
/** Targets that consume the source directly as slash-command markdown. Codex
|
|
112
|
+
* uses the separate SKILL.md renderer below. */
|
|
78
113
|
const COMMAND_DIR = {
|
|
79
114
|
"claude-code": ".claude/commands",
|
|
80
115
|
};
|
|
@@ -123,8 +158,8 @@ function toClaudeRuleSet(policy) {
|
|
|
123
158
|
return out;
|
|
124
159
|
}
|
|
125
160
|
/** Targets with a permission model, and where the rendered policy lands. A
|
|
126
|
-
* target absent here has no permission model
|
|
127
|
-
*
|
|
161
|
+
* target absent here has no Claude settings permission model. Codex security
|
|
162
|
+
* is emitted independently below. Shares a path
|
|
128
163
|
* with PLUGIN_EMITTERS below — both concerns compose into one settings op per
|
|
129
164
|
* target (see the single `kind: "settings"` EmitOp). */
|
|
130
165
|
const PERMISSION_EMITTERS = {
|
|
@@ -133,7 +168,7 @@ const PERMISSION_EMITTERS = {
|
|
|
133
168
|
/** Targets with a Claude Code plugin-marketplace model, and where the
|
|
134
169
|
* declaration lands. A target absent here has no plugin model (e.g.
|
|
135
170
|
* agents-md, a flat-file convention with no marketplace concept) → Praxis
|
|
136
|
-
* emits nothing for it.
|
|
171
|
+
* emits nothing for it. Codex marketplace delivery is handled separately. */
|
|
137
172
|
const PLUGIN_EMITTERS = {
|
|
138
173
|
"claude-code": { path: ".claude/settings.json" },
|
|
139
174
|
};
|
|
@@ -148,11 +183,12 @@ export function planEmit(manifest) {
|
|
|
148
183
|
const commandPackages = packages.filter((p) => p.provides.includes("commands"));
|
|
149
184
|
const pluginPackages = packages.filter((p) => p.provides.includes("plugins"));
|
|
150
185
|
const ops = [];
|
|
186
|
+
const codexSelected = manifest.targets.includes("codex");
|
|
151
187
|
for (const target of manifest.targets) {
|
|
152
188
|
// Prose rules — delivery (owned vs block) is the target's; `provides` decides
|
|
153
189
|
// which packages contribute. `loadPackageSource` is guaranteed by `provides`.
|
|
154
190
|
const sources = rulesPackages.map((p) => ({ pkg: p.name, source: loadPackageSource(p.name) ?? "" }));
|
|
155
|
-
if (sources.length > 0) {
|
|
191
|
+
if (sources.length > 0 && !(target === "agents-md" && codexSelected)) {
|
|
156
192
|
if (TARGET_DELIVERY[target] === "owned") {
|
|
157
193
|
for (const { pkg, source } of sources) {
|
|
158
194
|
ops.push({
|
|
@@ -214,6 +250,62 @@ export function planEmit(manifest) {
|
|
|
214
250
|
if (settingsPath && (rules || plugins)) {
|
|
215
251
|
ops.push({ kind: "settings", target, path: settingsPath, rules, plugins });
|
|
216
252
|
}
|
|
253
|
+
if (target === "codex") {
|
|
254
|
+
const policies = permissionPackages.map((pkg) => loadPolicy(pkg.name)).filter((p) => Boolean(p));
|
|
255
|
+
if (policies.length > 0) {
|
|
256
|
+
ops.push({ kind: "codex-config", target, path: ".codex/config.toml", enabled: true });
|
|
257
|
+
const combined = { allow: [], ask: [], deny: [] };
|
|
258
|
+
for (const policy of policies) {
|
|
259
|
+
for (const bucket of BUCKETS) {
|
|
260
|
+
for (const capability of policy[bucket]) {
|
|
261
|
+
if (!combined[bucket].includes(capability))
|
|
262
|
+
combined[bucket].push(capability);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
ops.push({
|
|
267
|
+
kind: "owned",
|
|
268
|
+
target,
|
|
269
|
+
path: ".codex/rules/praxis-safe-permissions.rules",
|
|
270
|
+
content: renderCodexRules(combined),
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
const codexPlugins = [];
|
|
274
|
+
for (const pkg of pluginPackages) {
|
|
275
|
+
const block = loadPluginsBlock(pkg.name);
|
|
276
|
+
if (!block?.codex)
|
|
277
|
+
continue;
|
|
278
|
+
const source = block.codex.subdir
|
|
279
|
+
? {
|
|
280
|
+
source: "git-subdir",
|
|
281
|
+
url: `https://github.com/${block.marketplace.source.repo}.git`,
|
|
282
|
+
path: block.codex.subdir.startsWith("./") ? block.codex.subdir : `./${block.codex.subdir}`,
|
|
283
|
+
}
|
|
284
|
+
: { source: "url", url: `https://github.com/${block.marketplace.source.repo}.git` };
|
|
285
|
+
if (block.marketplace.source.ref)
|
|
286
|
+
source.ref = block.marketplace.source.ref;
|
|
287
|
+
if (block.marketplace.source.sha)
|
|
288
|
+
source.sha = block.marketplace.source.sha;
|
|
289
|
+
codexPlugins.push({
|
|
290
|
+
name: block.codex.name,
|
|
291
|
+
source,
|
|
292
|
+
policy: {
|
|
293
|
+
installation: block.codex.installation,
|
|
294
|
+
authentication: block.codex.authentication,
|
|
295
|
+
},
|
|
296
|
+
category: block.codex.category,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
if (codexPlugins.length > 0) {
|
|
300
|
+
ops.push({
|
|
301
|
+
kind: "codex-marketplace",
|
|
302
|
+
target,
|
|
303
|
+
path: CODEX_MARKETPLACE_PATH,
|
|
304
|
+
statePath: CODEX_MARKETPLACE_STATE_PATH,
|
|
305
|
+
plugins: codexPlugins,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
217
309
|
// Slash commands (third artifact kind, docs/wiki/packages-and-emit.md "provides"). One owned file per
|
|
218
310
|
// command, prefixed so it's identifiable as Praxis-managed; targets with no
|
|
219
311
|
// command model are a no-op.
|
|
@@ -226,7 +318,7 @@ export function planEmit(manifest) {
|
|
|
226
318
|
// to any package name.
|
|
227
319
|
const onboardingDelegations = packages
|
|
228
320
|
.filter((p) => p.onboarding)
|
|
229
|
-
.map((p) => `-
|
|
321
|
+
.map((p) => `- \`${target === "codex" ? "$" : "/"}${p.onboarding.command}\` — ${p.onboarding.summary}`)
|
|
230
322
|
.join("\n");
|
|
231
323
|
const BOOTSTRAP_MARKER = "<!-- praxis:bootstrap-delegations -->";
|
|
232
324
|
const commandDir = COMMAND_DIR[target];
|
|
@@ -240,7 +332,22 @@ export function planEmit(manifest) {
|
|
|
240
332
|
kind: "owned",
|
|
241
333
|
target,
|
|
242
334
|
path: `${commandDir}/praxis-${name}.md`,
|
|
243
|
-
content: `${emitted}\n`,
|
|
335
|
+
content: `${renderNeutralSyntax(emitted, target)}\n`,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (target === "codex") {
|
|
341
|
+
for (const pkg of commandPackages) {
|
|
342
|
+
for (const { name, content } of loadCommandSources(pkg.name)) {
|
|
343
|
+
const emitted = content.includes(BOOTSTRAP_MARKER)
|
|
344
|
+
? content.replace(BOOTSTRAP_MARKER, onboardingDelegations)
|
|
345
|
+
: content;
|
|
346
|
+
ops.push({
|
|
347
|
+
kind: "owned",
|
|
348
|
+
target,
|
|
349
|
+
path: `.agents/skills/praxis-${name}/SKILL.md`,
|
|
350
|
+
content: renderCodexSkill(name, emitted),
|
|
244
351
|
});
|
|
245
352
|
}
|
|
246
353
|
}
|
|
@@ -248,6 +355,48 @@ export function planEmit(manifest) {
|
|
|
248
355
|
}
|
|
249
356
|
return ops;
|
|
250
357
|
}
|
|
358
|
+
/** Lines in `text`, ignoring any trailing newline(s) — so an owned file's
|
|
359
|
+
* synthesized trailing "\n" (see planEmit above) doesn't inflate the count. */
|
|
360
|
+
function countLines(text) {
|
|
361
|
+
const trimmed = text.replace(/\n+$/, "");
|
|
362
|
+
return trimmed.length === 0 ? 0 : trimmed.split("\n").length;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* The always-loaded methodology surface size: total lines and file count for
|
|
366
|
+
* the rule artifacts (`provides: rules`) a session loads at start. Computed
|
|
367
|
+
* from the **planned emit** (manifest → resolve → planEmit), not from files on
|
|
368
|
+
* disk, so it reports what the manifest implies — the same discipline `check`
|
|
369
|
+
* already uses for drift.
|
|
370
|
+
*
|
|
371
|
+
* Counts the claude-code target's owned `.claude/rules/*` files (one per rules
|
|
372
|
+
* package). If claude-code isn't a manifest target, falls back to the
|
|
373
|
+
* Codex/agents-md managed block content, one artifact per block, so the targets'
|
|
374
|
+
* shared source is never double-counted. Commands, permissions/plugins JSON,
|
|
375
|
+
* and the wiki are never counted — none are loaded at session start.
|
|
376
|
+
*
|
|
377
|
+
* Throws if the manifest can't resolve (propagates planEmit's error, e.g. an
|
|
378
|
+
* unknown package) — callers in check mode should catch and omit the line
|
|
379
|
+
* rather than let it mask the sync error (D40's degrade-by-omission model).
|
|
380
|
+
*/
|
|
381
|
+
export function computeMethodologySize(manifest) {
|
|
382
|
+
const ops = planEmit(manifest);
|
|
383
|
+
const claudeRuleFiles = ops.filter((op) => op.kind === "owned" && op.target === "claude-code" && op.path.startsWith(".claude/rules/"));
|
|
384
|
+
if (claudeRuleFiles.length > 0) {
|
|
385
|
+
return {
|
|
386
|
+
totalLines: claudeRuleFiles.reduce((sum, op) => sum + countLines(op.content), 0),
|
|
387
|
+
fileCount: claudeRuleFiles.length,
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
const agentsBlock = ops.find((op) => op.kind === "block" && (op.target === "codex" || op.target === "agents-md"));
|
|
391
|
+
if (agentsBlock) {
|
|
392
|
+
const blocks = Object.values(agentsBlock.blocks);
|
|
393
|
+
return {
|
|
394
|
+
totalLines: blocks.reduce((sum, content) => sum + countLines(content), 0),
|
|
395
|
+
fileCount: blocks.length,
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
return { totalLines: 0, fileCount: 0 };
|
|
399
|
+
}
|
|
251
400
|
/** Apply one emit op against the destination file's existing text (pure; no I/O).
|
|
252
401
|
* Owned files are replaced wholesale; block files are reconciled; settings ops
|
|
253
402
|
* reconcile permissions and/or plugins in one pass over the same JSON file. */
|
|
@@ -263,6 +412,11 @@ export function applyOp(op, existing = "") {
|
|
|
263
412
|
desired.plugins = op.plugins;
|
|
264
413
|
return reconcileSettings(existing, desired);
|
|
265
414
|
}
|
|
415
|
+
if (op.kind === "codex-config")
|
|
416
|
+
return reconcileCodexConfig(existing, op.enabled);
|
|
417
|
+
if (op.kind === "codex-marketplace") {
|
|
418
|
+
throw new Error("Codex marketplace operations require their ownership sidecar and must be applied by sync.");
|
|
419
|
+
}
|
|
266
420
|
return reconcile(existing, op.blocks);
|
|
267
421
|
}
|
|
268
422
|
//# 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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAA0C,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAmB,MAAM,WAAW,CAAC;AA8B3D,MAAM,aAAa,GAAG,aAAa,CAAC;AAEpC,SAAS,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpF,OAAO,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CACvF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;IAC3E,MAAM,GAAG,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,gEAAgE;IAChE,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpB,qEAAqE;QACrE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAGzB,CAAC;YACF,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC7D,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;QAC7E,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,kBAAkB,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,4BAA4B,GAAa,EAAE,CAAC;IAClD,IAAI,kBAAkB;QAAE,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzE,IAAI,iBAAiB;QAAE,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,kBAAkB;QAAE,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEvE,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,kBAAkB,IAAI,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrG,IAAI,iBAAiB,IAAI,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7F,IAAI,kBAAkB;QAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;QAC7B,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC;QAC7B,sBAAsB,EAAE,GAAG,CAAC,WAAW,CAAC;YACtC,CAAC,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;YACrE,CAAC,CAAC,KAAK;QACT,sBAAsB,EAAE,GAAG,CAAC,WAAW,CAAC;YACtC,CAAC,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;YACrE,CAAC,CAAC,KAAK;QACT,eAAe;QACf,4BAA4B;QAC5B,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC;QAClC,cAAc,EAAE,OAAO;KACxB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAgB,EAAE,OAAkB;IAClE,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,mDAAmD;IACrD,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,IAAI,EAAE,CAAC;IAEd,MAAM,QAAQ,GAAa;QACzB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,mBAAmB;QAChC,OAAO,EACL,OAAO;YACP,CAAC,GAAG,CAAC,4BAA4B,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACjH,QAAQ,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;KACjC,CAAC;IACF,IAAI,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;IACvC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAe,EACf,QAAkB,EAClB,OAAiB;IAEjB,MAAM,QAAQ,GAAa;QACzB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,mBAAmB;QAChC,OAAO;QACP,QAAQ;KACT,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;8DAC8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,MAAM,KAAK,GAAG;QACZ,iFAAiF;QACjF,oEAAoE;QACpE,YAAY,QAAQ,CAAC,OAAO,EAAE;QAC9B,iBAAiB,QAAQ,CAAC,WAAW,GAAG;KACzC,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAgBD,yDAAyD;AACzD,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO;QACL,GAAG;QACH,QAAQ;QACR,YAAY,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC;QAC3C,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;6BAE6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAEtD,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GACiF,EACjF,QAAkB;IAElB,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtG,OAAO,CACL,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAC9D,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QACxD,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC;AAED;gFACgF;AAChF,MAAM,UAAU,SAAS,CACvB,GAAW,EACX,QAAkB,EAClB,GACiF;IAEjF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACtC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACtC,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
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({
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AAEH,+EAA+E;AAC/E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAE3C,yEAAyE;AACzE,MAAM,OAAO,GAAG,CAAC,aAAa,EAAE,WAAW,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AAEH,+EAA+E;AAC/E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAE3C,yEAAyE;AACzE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;AAEtE,0DAA0D;AAC1D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,yEAAyE;IACzE,iFAAiF;IACjF,6EAA6E;IAC7E,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,6EAA6E;IAC7E,wEAAwE;IACxE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5C,CAAC,CAAC;AAMH;4EAC4E;AAC5E,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kCAAmC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC3E,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,iCAAiC,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/packages.d.ts
CHANGED
package/dist/plugins.d.ts
CHANGED
|
@@ -11,6 +11,20 @@ export declare const pluginsBlockSchema: z.ZodObject<{
|
|
|
11
11
|
}, z.core.$strict>;
|
|
12
12
|
}, z.core.$strict>;
|
|
13
13
|
enable: z.ZodArray<z.ZodString>;
|
|
14
|
+
codex: z.ZodOptional<z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
subdir: z.ZodOptional<z.ZodString>;
|
|
17
|
+
category: z.ZodString;
|
|
18
|
+
installation: z.ZodDefault<z.ZodEnum<{
|
|
19
|
+
AVAILABLE: "AVAILABLE";
|
|
20
|
+
INSTALLED_BY_DEFAULT: "INSTALLED_BY_DEFAULT";
|
|
21
|
+
NOT_AVAILABLE: "NOT_AVAILABLE";
|
|
22
|
+
}>>;
|
|
23
|
+
authentication: z.ZodDefault<z.ZodEnum<{
|
|
24
|
+
ON_INSTALL: "ON_INSTALL";
|
|
25
|
+
ON_USE: "ON_USE";
|
|
26
|
+
}>>;
|
|
27
|
+
}, z.core.$strict>>;
|
|
14
28
|
}, z.core.$strict>;
|
|
15
29
|
export type PluginsBlock = z.infer<typeof pluginsBlockSchema>;
|
|
16
30
|
/** Parse + validate neutral plugins.yaml text. Throws a readable,
|
package/dist/plugins.js
CHANGED
|
@@ -33,6 +33,13 @@ const marketplaceSchema = z.strictObject({
|
|
|
33
33
|
name: z.string().min(1),
|
|
34
34
|
source: marketplaceSourceSchema,
|
|
35
35
|
});
|
|
36
|
+
const codexPluginSchema = z.strictObject({
|
|
37
|
+
name: z.string().min(1),
|
|
38
|
+
subdir: z.string().min(1).optional(),
|
|
39
|
+
category: z.string().min(1),
|
|
40
|
+
installation: z.enum(["AVAILABLE", "INSTALLED_BY_DEFAULT", "NOT_AVAILABLE"]).default("INSTALLED_BY_DEFAULT"),
|
|
41
|
+
authentication: z.enum(["ON_INSTALL", "ON_USE"]).default("ON_INSTALL"),
|
|
42
|
+
});
|
|
36
43
|
export const pluginsBlockSchema = z.strictObject({
|
|
37
44
|
// Targets this declaration applies to; validated against known Targets by the
|
|
38
45
|
// caller (manifest.ts owns the Target enum, plugins.ts stays decoupled from it).
|
|
@@ -40,6 +47,8 @@ export const pluginsBlockSchema = z.strictObject({
|
|
|
40
47
|
marketplace: marketplaceSchema,
|
|
41
48
|
// "<plugin>@<marketplace-name>" — validated against marketplace.name below.
|
|
42
49
|
enable: z.array(z.string().min(1)).min(1),
|
|
50
|
+
/** Present only after the referenced revision's Codex plugin manifest is verified. */
|
|
51
|
+
codex: codexPluginSchema.optional(),
|
|
43
52
|
});
|
|
44
53
|
/** Parse + validate neutral plugins.yaml text. Throws a readable,
|
|
45
54
|
* agent-actionable error naming each problem — mirrors parsePolicy. */
|