@everydaydevopsio/ballast 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -3
- package/agents/cicd/templates/codex-header.md +7 -0
- package/agents/linting/templates/codex-header.md +7 -0
- package/agents/local-dev/templates/codex-header-badges.md +7 -0
- package/agents/local-dev/templates/codex-header-license.md +7 -0
- package/agents/local-dev/templates/codex-header-mcp.md +7 -0
- package/agents/local-dev/templates/codex-header.md +7 -0
- package/agents/logging/content.md +82 -8
- package/agents/logging/templates/codex-header.md +7 -0
- package/agents/observability/templates/codex-header.md +7 -0
- package/dist/build.d.ts +11 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +92 -1
- package/dist/build.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/install.d.ts +2 -0
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +32 -2
- package/dist/install.js.map +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
# Ballast
|
|
2
2
|
|
|
3
|
-
[](https://github.com/everydaydevopsio/ballast/actions/workflows/test.yml)
|
|
4
|
+
[](https://github.com/everydaydevopsio/ballast/actions/workflows/lint.yaml)
|
|
5
|
+
[](https://github.com/everydaydevopsio/ballast/actions/workflows/publish.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://github.com/everydaydevopsio/ballast/releases)
|
|
8
|
+
[](https://www.npmjs.com/package/@everydaydevopsio/ballast)
|
|
9
|
+
[](https://www.npmjs.com/package/@everydaydevopsio/ballast)
|
|
4
10
|
|
|
5
|
-
CLI to install TypeScript AI agent rules for **Cursor**, **Claude Code**, and **
|
|
11
|
+
CLI to install TypeScript AI agent rules for **Cursor**, **Claude Code**, **OpenCode**, and **Codex**. One package, one command—pick your platform and which agents to install.
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
- [nvm](https://github.com/nvm-sh/nvm) (Node Version Manager)
|
|
16
|
+
|
|
17
|
+
After cloning the repo, install and use the project's Node version:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
nvm install # installs the version from .nvmrc
|
|
21
|
+
nvm use # switches to it (or run `nvm install` which does both)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then install dependencies: `pnpm install` (or `npm install` / `yarn`).
|
|
6
25
|
|
|
7
26
|
## Agents
|
|
8
27
|
|
|
@@ -50,7 +69,7 @@ npx ballast install
|
|
|
50
69
|
|
|
51
70
|
You’ll be prompted for:
|
|
52
71
|
|
|
53
|
-
1. **AI platform**: `cursor`, `claude`, or `
|
|
72
|
+
1. **AI platform**: `cursor`, `claude`, `opencode`, or `codex`
|
|
54
73
|
2. **Agents**: comma-separated (e.g. `linting, local-dev`) or `all`
|
|
55
74
|
|
|
56
75
|
Your choices are saved to `.rulesrc.json`. Future runs reuse them (non-interactive).
|
|
@@ -69,6 +88,7 @@ npx ballast install --target cursor --agent linting --force
|
|
|
69
88
|
|
|
70
89
|
# Non-interactive (CI): require --target and --agent/--all if no .rulesrc.json
|
|
71
90
|
npx ballast install --yes --target cursor --agent linting
|
|
91
|
+
ballast install --yes --target codex --all
|
|
72
92
|
```
|
|
73
93
|
|
|
74
94
|
### CI / non-interactive
|
|
@@ -96,6 +116,9 @@ Rules are written under your project root:
|
|
|
96
116
|
| Cursor | `.cursor/rules/` | `<agent>.mdc` |
|
|
97
117
|
| Claude | `.claude/rules/` | `<agent>.md` |
|
|
98
118
|
| OpenCode | `.opencode/` | `<agent>.md` |
|
|
119
|
+
| Codex | `.codex/rules/` | `<agent>.md` |
|
|
120
|
+
|
|
121
|
+
Codex installs a root `AGENTS.md` that references the `.codex/rules/` files so Codex CLI and Codex app can load the same guidance.
|
|
99
122
|
|
|
100
123
|
## Overwrite policy
|
|
101
124
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Local Development: GitHub and Issues MCP (Optional)
|
|
2
|
+
|
|
3
|
+
These rules are intended for Codex (CLI and app).
|
|
4
|
+
|
|
5
|
+
Use GitHub MCP and/or issues MCP (Jira, Linear, GitHub Issues) when available to support local development context. Only apply when these MCP servers are enabled.
|
|
6
|
+
|
|
7
|
+
---
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Local Development Environment Rules
|
|
2
|
+
|
|
3
|
+
These rules are intended for Codex (CLI and app).
|
|
4
|
+
|
|
5
|
+
These rules help set up and maintain a consistent local development environment for TypeScript/JavaScript projects, including Dockerfile and Docker Compose for local development following https://www.markcallen.com/dockerfile-for-typescript/
|
|
6
|
+
|
|
7
|
+
---
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# Centralized Logging Agent
|
|
2
2
|
|
|
3
|
-
You are a centralized logging specialist for TypeScript/JavaScript applications. Your role is to configure Pino for structured logging with Fluentd as the backend,
|
|
3
|
+
You are a centralized logging specialist for TypeScript/JavaScript applications. Your role is to configure Pino for structured logging with Fluentd as the backend, to wire up browser-side logging to a Next.js `/api/logs` endpoint, and to add structured logging for CLI tools.
|
|
4
4
|
|
|
5
5
|
## Goals
|
|
6
6
|
|
|
7
7
|
- **Server-side**: Configure Pino to send logs to Fluentd for Node.js apps and Next.js API routes.
|
|
8
8
|
- **Browser-side**: Use pino-browser with pino-transmit-http to send console logs, exceptions, `window.onerror`, and `unhandledrejection` to a Next.js `/api/logs` endpoint.
|
|
9
|
+
- **CLI**: Use Pino for structured logging in CLI tools (e.g. `ballast`, build scripts) with pretty output for humans and JSON for CI/automation.
|
|
9
10
|
- **Log levels**: DEBUG for development, ERROR for production (configurable via `NODE_ENV` or `LOG_LEVEL`).
|
|
10
11
|
|
|
11
12
|
## Your Responsibilities
|
|
@@ -23,7 +24,70 @@ pnpm add pino pino-fluentd pino-transmit-http @fluent-org/logger
|
|
|
23
24
|
- **pino-transmit-http**: Browser transmit to POST logs to an HTTP endpoint
|
|
24
25
|
- **@fluent-org/logger**: Programmatic Fluentd client (for custom transport when piping is not suitable)
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
For **CLI projects only**, you need just:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm add pino pino-pretty
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
- **pino-pretty**: Pretty-prints logs for human readability in development (optional, devDependency)
|
|
34
|
+
|
|
35
|
+
### 2. CLI Projects: Pino for Command-Line Tools
|
|
36
|
+
|
|
37
|
+
For CLI tools (e.g. `ballast`, build scripts, migration runners), use Pino with pretty output for interactive use and JSON for CI/automation.
|
|
38
|
+
|
|
39
|
+
Create `src/lib/logger.ts` (or `lib/logger.ts`):
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import pino from 'pino';
|
|
43
|
+
|
|
44
|
+
const isProd = process.env.NODE_ENV === 'production';
|
|
45
|
+
const isCi = process.env.CI === 'true' || process.env.CI === '1';
|
|
46
|
+
const logLevel = process.env.LOG_LEVEL ?? (isProd ? 'error' : 'debug');
|
|
47
|
+
|
|
48
|
+
// Pretty output for humans (TTY or dev), JSON for CI/automation
|
|
49
|
+
const usePretty = !isProd && !isCi && (process.stdout.isTTY ?? false);
|
|
50
|
+
|
|
51
|
+
export const logger = pino({
|
|
52
|
+
level: logLevel,
|
|
53
|
+
...(usePretty
|
|
54
|
+
? {
|
|
55
|
+
transport: {
|
|
56
|
+
target: 'pino-pretty',
|
|
57
|
+
options: {
|
|
58
|
+
colorize: true,
|
|
59
|
+
translateTime: 'SYS:HH:MM:ss'
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
: {})
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Usage in CLI code:**
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { logger } from './lib/logger';
|
|
71
|
+
|
|
72
|
+
// Instead of console.log('Installing rules...'):
|
|
73
|
+
logger.info('Installing rules');
|
|
74
|
+
|
|
75
|
+
// With structured data:
|
|
76
|
+
logger.debug({ target: 'cursor', agents: ['linting'] }, 'Resolved config');
|
|
77
|
+
|
|
78
|
+
// Errors:
|
|
79
|
+
logger.error({ err }, 'Install failed');
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Pipe to Fluentd when running in CI/CD:**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
node dist/cli.js install --all 2>&1 | pino-fluentd --host 127.0.0.1 --port 24224 --tag cli
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
For CLI projects, omit pino-transmit-http, pino-fluentd, and @fluent-org/logger unless you need Fluentd integration. Use `pino-pretty` as a devDependency so production installs stay lean.
|
|
89
|
+
|
|
90
|
+
### 3. Server-Side: Node.js and Next.js API
|
|
27
91
|
|
|
28
92
|
#### Option A: Pipe to pino-fluentd (recommended for Node.js)
|
|
29
93
|
|
|
@@ -105,7 +169,7 @@ export const logger = stream
|
|
|
105
169
|
: pino({ level: logLevel });
|
|
106
170
|
```
|
|
107
171
|
|
|
108
|
-
###
|
|
172
|
+
### 4. Next.js API: `/api/logs` endpoint
|
|
109
173
|
|
|
110
174
|
Create `src/app/api/logs/route.ts` (App Router) or `pages/api/logs.ts` (Pages Router):
|
|
111
175
|
|
|
@@ -168,7 +232,7 @@ export default async function handler(
|
|
|
168
232
|
}
|
|
169
233
|
```
|
|
170
234
|
|
|
171
|
-
###
|
|
235
|
+
### 5. Browser-Side: pino-browser with pino-transmit-http
|
|
172
236
|
|
|
173
237
|
Create `src/lib/browser-logger.ts` (or `lib/browser-logger.ts`):
|
|
174
238
|
|
|
@@ -192,7 +256,7 @@ export const browserLogger = pino({
|
|
|
192
256
|
});
|
|
193
257
|
```
|
|
194
258
|
|
|
195
|
-
###
|
|
259
|
+
### 6. Wire Up Global Error Handlers (Browser)
|
|
196
260
|
|
|
197
261
|
Create `src/lib/init-browser-logging.ts` and import it from your root layout or `_app`:
|
|
198
262
|
|
|
@@ -270,7 +334,7 @@ export default function App({ Component, pageProps }) {
|
|
|
270
334
|
}
|
|
271
335
|
```
|
|
272
336
|
|
|
273
|
-
###
|
|
337
|
+
### 7. Use the Browser Logger
|
|
274
338
|
|
|
275
339
|
Replace `console.log` with the browser logger in client components:
|
|
276
340
|
|
|
@@ -284,7 +348,7 @@ browserLogger.debug({ data }, 'User clicked');
|
|
|
284
348
|
browserLogger.error({ err }, 'Something failed');
|
|
285
349
|
```
|
|
286
350
|
|
|
287
|
-
###
|
|
351
|
+
### 8. Environment Variables
|
|
288
352
|
|
|
289
353
|
Add to `.env.example`:
|
|
290
354
|
|
|
@@ -303,7 +367,7 @@ FLUENT_ENABLED=false
|
|
|
303
367
|
|
|
304
368
|
For production, set `FLUENT_ENABLED=true` and configure `FLUENT_HOST` / `FLUENT_PORT` to point to your Fluentd instance.
|
|
305
369
|
|
|
306
|
-
###
|
|
370
|
+
### 9. Fluentd Configuration (Reference)
|
|
307
371
|
|
|
308
372
|
Minimal Fluentd config to receive logs on port 24224:
|
|
309
373
|
|
|
@@ -323,6 +387,15 @@ Replace `@type stdout` with `@type elasticsearch`, `@type s3`, or another output
|
|
|
323
387
|
|
|
324
388
|
## Implementation Order
|
|
325
389
|
|
|
390
|
+
**For CLI projects:**
|
|
391
|
+
|
|
392
|
+
1. Install pino and pino-pretty (pino-pretty as devDependency)
|
|
393
|
+
2. Create `lib/logger.ts` with pretty output for TTY and JSON for CI
|
|
394
|
+
3. Replace `console.log` / `console.error` with `logger.info` / `logger.error`
|
|
395
|
+
4. Add `LOG_LEVEL` to `.env.example` if using env files
|
|
396
|
+
|
|
397
|
+
**For server/browser projects:**
|
|
398
|
+
|
|
326
399
|
1. Install dependencies (pino, pino-fluentd, pino-transmit-http, fluent-logger)
|
|
327
400
|
2. Create server-side logger (`lib/logger.ts`) with level from NODE_ENV
|
|
328
401
|
3. Create `/api/logs` route in Next.js
|
|
@@ -343,6 +416,7 @@ Override with `LOG_LEVEL` (server) or `NEXT_PUBLIC_LOG_LEVEL` (browser).
|
|
|
343
416
|
|
|
344
417
|
## Important Notes
|
|
345
418
|
|
|
419
|
+
- **CLI projects**: Use Pino with pino-pretty for human-readable output when running interactively (TTY). In CI (`CI=true`), output stays as JSON for parsing. Omit browser and Fluentd deps unless you need them.
|
|
346
420
|
- Use the **pipe approach** (`node app | pino-fluentd`) when possible; it keeps the app simple and lets pino-fluentd handle Fluentd connection.
|
|
347
421
|
- For Next.js in serverless (Vercel, etc.), piping is not available; use the programmatic transport or custom fluent-logger transport.
|
|
348
422
|
- The `/api/logs` endpoint receives batched JSON arrays from pino-transmit-http; parse and forward to your server logger.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Centralized Logging Rules
|
|
2
|
+
|
|
3
|
+
These rules are intended for Codex (CLI and app).
|
|
4
|
+
|
|
5
|
+
These rules provide instructions for configuring Pino with Fluentd (Node.js, Next.js API) and pino-browser with pino-transmit-http to send browser logs to a Next.js /api/logs endpoint.
|
|
6
|
+
|
|
7
|
+
---
|
package/dist/build.d.ts
CHANGED
|
@@ -24,6 +24,13 @@ export declare function buildClaudeFormat(agentId: string, ruleSuffix?: string):
|
|
|
24
24
|
* Build content for OpenCode (YAML frontmatter + content)
|
|
25
25
|
*/
|
|
26
26
|
export declare function buildOpenCodeFormat(agentId: string, ruleSuffix?: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Build content for Codex (header + content)
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildCodexFormat(agentId: string, ruleSuffix?: string): string;
|
|
31
|
+
export declare function extractDescriptionFromFrontmatter(frontmatter: string): string | null;
|
|
32
|
+
export declare function getCodexRuleDescription(agentId: string, ruleSuffix?: string): string | null;
|
|
33
|
+
export declare function buildCodexAgentsMd(agents: string[]): string;
|
|
27
34
|
/**
|
|
28
35
|
* Build content for the given agent, target, and optional rule suffix
|
|
29
36
|
*/
|
|
@@ -35,6 +42,10 @@ export declare function getDestination(agentId: string, target: Target, projectR
|
|
|
35
42
|
dir: string;
|
|
36
43
|
file: string;
|
|
37
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Get destination for Codex AGENTS.md
|
|
47
|
+
*/
|
|
48
|
+
export declare function getCodexAgentsMdPath(projectRoot: string): string;
|
|
38
49
|
/**
|
|
39
50
|
* List supported targets
|
|
40
51
|
*/
|
package/dist/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAQvC;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAQR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAQR;AAuBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7E;AAED,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAyB3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA2B/B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC"}
|
package/dist/build.js
CHANGED
|
@@ -9,13 +9,19 @@ exports.getTemplate = getTemplate;
|
|
|
9
9
|
exports.buildCursorFormat = buildCursorFormat;
|
|
10
10
|
exports.buildClaudeFormat = buildClaudeFormat;
|
|
11
11
|
exports.buildOpenCodeFormat = buildOpenCodeFormat;
|
|
12
|
+
exports.buildCodexFormat = buildCodexFormat;
|
|
13
|
+
exports.extractDescriptionFromFrontmatter = extractDescriptionFromFrontmatter;
|
|
14
|
+
exports.getCodexRuleDescription = getCodexRuleDescription;
|
|
15
|
+
exports.buildCodexAgentsMd = buildCodexAgentsMd;
|
|
12
16
|
exports.buildContent = buildContent;
|
|
13
17
|
exports.getDestination = getDestination;
|
|
18
|
+
exports.getCodexAgentsMdPath = getCodexAgentsMdPath;
|
|
14
19
|
exports.listTargets = listTargets;
|
|
15
20
|
const fs_1 = __importDefault(require("fs"));
|
|
16
21
|
const path_1 = __importDefault(require("path"));
|
|
22
|
+
const yaml_1 = __importDefault(require("yaml"));
|
|
17
23
|
const agents_1 = require("./agents");
|
|
18
|
-
const TARGETS = ['cursor', 'claude', 'opencode'];
|
|
24
|
+
const TARGETS = ['cursor', 'claude', 'opencode', 'codex'];
|
|
19
25
|
/** Rule file convention: content.md (main) and content-<suffix>.md (e.g. content-mcp.md) */
|
|
20
26
|
const CONTENT_PREFIX = 'content';
|
|
21
27
|
const CONTENT_MAIN = `${CONTENT_PREFIX}.md`;
|
|
@@ -105,6 +111,78 @@ function buildOpenCodeFormat(agentId, ruleSuffix) {
|
|
|
105
111
|
const content = getContent(agentId, ruleSuffix);
|
|
106
112
|
return frontmatter + '\n' + content;
|
|
107
113
|
}
|
|
114
|
+
function getCodexHeader(agentId, ruleSuffix) {
|
|
115
|
+
let codexError;
|
|
116
|
+
try {
|
|
117
|
+
return getTemplate(agentId, 'codex-header.md', ruleSuffix);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
codexError = err;
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
return getTemplate(agentId, 'claude-header.md', ruleSuffix);
|
|
124
|
+
}
|
|
125
|
+
catch (claudeError) {
|
|
126
|
+
const codexMsg = codexError instanceof Error ? codexError.message : String(codexError);
|
|
127
|
+
const claudeMsg = claudeError instanceof Error ? claudeError.message : String(claudeError);
|
|
128
|
+
throw new Error(`Agent "${agentId}" missing Codex header: tried codex-header.md (${codexMsg}) and fallback claude-header.md (${claudeMsg})`, { cause: claudeError });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Build content for Codex (header + content)
|
|
133
|
+
*/
|
|
134
|
+
function buildCodexFormat(agentId, ruleSuffix) {
|
|
135
|
+
const header = getCodexHeader(agentId, ruleSuffix);
|
|
136
|
+
const content = getContent(agentId, ruleSuffix);
|
|
137
|
+
return header + content;
|
|
138
|
+
}
|
|
139
|
+
function extractDescriptionFromFrontmatter(frontmatter) {
|
|
140
|
+
try {
|
|
141
|
+
// Extract content between --- delimiters to avoid multi-document parse error
|
|
142
|
+
const match = frontmatter.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
143
|
+
const yamlContent = match ? match[1] : frontmatter;
|
|
144
|
+
const parsed = yaml_1.default.parse(yamlContent);
|
|
145
|
+
const description = parsed?.description;
|
|
146
|
+
if (typeof description === 'string') {
|
|
147
|
+
const trimmed = description.trim();
|
|
148
|
+
return trimmed || null;
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function getCodexRuleDescription(agentId, ruleSuffix) {
|
|
157
|
+
try {
|
|
158
|
+
const frontmatter = getTemplate(agentId, 'cursor-frontmatter.yaml', ruleSuffix);
|
|
159
|
+
return extractDescriptionFromFrontmatter(frontmatter);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function buildCodexAgentsMd(agents) {
|
|
166
|
+
const lines = [];
|
|
167
|
+
lines.push('# AGENTS.md');
|
|
168
|
+
lines.push('');
|
|
169
|
+
lines.push('This file provides guidance to Codex (CLI and app) for working in this repository.');
|
|
170
|
+
lines.push('');
|
|
171
|
+
lines.push('## Installed agent rules');
|
|
172
|
+
lines.push('');
|
|
173
|
+
lines.push('Read and follow these rule files in `.codex/rules/` when they apply:');
|
|
174
|
+
lines.push('');
|
|
175
|
+
for (const agentId of agents) {
|
|
176
|
+
const suffixes = listRuleSuffixes(agentId);
|
|
177
|
+
for (const ruleSuffix of suffixes) {
|
|
178
|
+
const basename = ruleSuffix ? `${agentId}-${ruleSuffix}` : agentId;
|
|
179
|
+
const description = getCodexRuleDescription(agentId, ruleSuffix) ?? `Rules for ${basename}`;
|
|
180
|
+
lines.push(`- \`.codex/rules/${basename}.md\` — ${description}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
lines.push('');
|
|
184
|
+
return lines.join('\n');
|
|
185
|
+
}
|
|
108
186
|
/**
|
|
109
187
|
* Build content for the given agent, target, and optional rule suffix
|
|
110
188
|
*/
|
|
@@ -116,6 +194,8 @@ function buildContent(agentId, target, ruleSuffix) {
|
|
|
116
194
|
return buildClaudeFormat(agentId, ruleSuffix);
|
|
117
195
|
case 'opencode':
|
|
118
196
|
return buildOpenCodeFormat(agentId, ruleSuffix);
|
|
197
|
+
case 'codex':
|
|
198
|
+
return buildCodexFormat(agentId, ruleSuffix);
|
|
119
199
|
default:
|
|
120
200
|
throw new Error(`Unknown target: ${target}`);
|
|
121
201
|
}
|
|
@@ -142,10 +222,21 @@ function getDestination(agentId, target, projectRoot, ruleSuffix) {
|
|
|
142
222
|
const file = path_1.default.join(dir, `${basename}.md`);
|
|
143
223
|
return { dir, file };
|
|
144
224
|
}
|
|
225
|
+
case 'codex': {
|
|
226
|
+
const dir = path_1.default.join(root, '.codex', 'rules');
|
|
227
|
+
const file = path_1.default.join(dir, `${basename}.md`);
|
|
228
|
+
return { dir, file };
|
|
229
|
+
}
|
|
145
230
|
default:
|
|
146
231
|
throw new Error(`Unknown target: ${target}`);
|
|
147
232
|
}
|
|
148
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Get destination for Codex AGENTS.md
|
|
236
|
+
*/
|
|
237
|
+
function getCodexAgentsMdPath(projectRoot) {
|
|
238
|
+
return path_1.default.join(path_1.default.resolve(projectRoot), 'AGENTS.md');
|
|
239
|
+
}
|
|
149
240
|
/**
|
|
150
241
|
* List supported targets
|
|
151
242
|
*/
|
package/dist/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -63,7 +63,7 @@ Commands:
|
|
|
63
63
|
install Install agent rules for the chosen AI platform (default)
|
|
64
64
|
|
|
65
65
|
Options:
|
|
66
|
-
--target, -t <platform> AI platform: cursor, claude, opencode
|
|
66
|
+
--target, -t <platform> AI platform: cursor, claude, opencode, codex
|
|
67
67
|
--agent, -a <agents> Agent(s): linting, local-dev, cicd, observability (comma-separated)
|
|
68
68
|
--all Install all agents
|
|
69
69
|
--force, -f Overwrite existing rule files
|
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB,kBAAkB,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB,kBAAkB,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAanE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAqBnE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAQlC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
package/dist/install.d.ts
CHANGED
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAkDvC,MAAM,WAAW,6BAA6B;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CA2BtD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oFAAoF;IACpF,cAAc,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,aAAa,CA8E9D;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA4EjB"}
|
package/dist/install.js
CHANGED
|
@@ -24,7 +24,7 @@ function prompt(question) {
|
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* Interactive: ask for target (cursor | claude | opencode)
|
|
27
|
+
* Interactive: ask for target (cursor | claude | opencode | codex)
|
|
28
28
|
*/
|
|
29
29
|
async function promptTarget() {
|
|
30
30
|
const targets = (0, build_1.listTargets)();
|
|
@@ -84,8 +84,11 @@ function install(options) {
|
|
|
84
84
|
const { projectRoot, target, agents, force = false, saveConfig: persist } = options;
|
|
85
85
|
const installed = [];
|
|
86
86
|
const installedRules = [];
|
|
87
|
+
const installedSupportFiles = [];
|
|
87
88
|
const skipped = [];
|
|
89
|
+
const skippedSupportFiles = [];
|
|
88
90
|
const errors = [];
|
|
91
|
+
const processedAgentIds = new Set();
|
|
89
92
|
if (persist) {
|
|
90
93
|
(0, config_1.saveConfig)({ target, agents }, projectRoot);
|
|
91
94
|
}
|
|
@@ -94,6 +97,7 @@ function install(options) {
|
|
|
94
97
|
errors.push({ agent: agentId, error: 'Unknown agent' });
|
|
95
98
|
continue;
|
|
96
99
|
}
|
|
100
|
+
processedAgentIds.add(agentId);
|
|
97
101
|
let agentInstalled = false;
|
|
98
102
|
let agentSkipped = false;
|
|
99
103
|
try {
|
|
@@ -124,7 +128,25 @@ function install(options) {
|
|
|
124
128
|
});
|
|
125
129
|
}
|
|
126
130
|
}
|
|
127
|
-
|
|
131
|
+
if (target === 'codex') {
|
|
132
|
+
const agentsMdPath = (0, build_1.getCodexAgentsMdPath)(projectRoot);
|
|
133
|
+
if (fs_1.default.existsSync(agentsMdPath) && !force) {
|
|
134
|
+
skippedSupportFiles.push(agentsMdPath);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const content = (0, build_1.buildCodexAgentsMd)(Array.from(processedAgentIds));
|
|
138
|
+
fs_1.default.writeFileSync(agentsMdPath, content, 'utf8');
|
|
139
|
+
installedSupportFiles.push(agentsMdPath);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
installed,
|
|
144
|
+
installedRules,
|
|
145
|
+
installedSupportFiles,
|
|
146
|
+
skipped,
|
|
147
|
+
skippedSupportFiles,
|
|
148
|
+
errors
|
|
149
|
+
};
|
|
128
150
|
}
|
|
129
151
|
/**
|
|
130
152
|
* Run install flow: resolve target/agents (interactive or from config/flags), then install.
|
|
@@ -167,9 +189,17 @@ async function runInstall(options = {}) {
|
|
|
167
189
|
console.log(` ${label} -> ${file}`);
|
|
168
190
|
});
|
|
169
191
|
}
|
|
192
|
+
if (result.installedSupportFiles.length > 0) {
|
|
193
|
+
result.installedSupportFiles.forEach((file) => {
|
|
194
|
+
console.log(` AGENTS.md -> ${file}`);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
170
197
|
if (result.skipped.length > 0) {
|
|
171
198
|
console.log(`Skipped (already present; use --force to overwrite): ${result.skipped.join(', ')}`);
|
|
172
199
|
}
|
|
200
|
+
if (result.skippedSupportFiles.length > 0) {
|
|
201
|
+
console.log(`Skipped support files (already present; use --force to overwrite): ${result.skippedSupportFiles.join(', ')}`);
|
|
202
|
+
}
|
|
173
203
|
if (result.installed.length === 0 &&
|
|
174
204
|
result.skipped.length === 0 &&
|
|
175
205
|
result.errors.length === 0) {
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@everydaydevopsio/ballast",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "CLI to install TypeScript AI agent rules (linting, local-dev, CI/CD, observability, logging) for Cursor, Claude Code, and OpenCode",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -54,6 +54,9 @@
|
|
|
54
54
|
"prettier --write"
|
|
55
55
|
]
|
|
56
56
|
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"yaml": "^2.8.2"
|
|
59
|
+
},
|
|
57
60
|
"scripts": {
|
|
58
61
|
"build": "tsc",
|
|
59
62
|
"test": "jest",
|