waypoint-codex 0.20.0 → 1.0.1

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 (41) hide show
  1. package/README.md +18 -37
  2. package/dist/src/cli.js +1 -1
  3. package/dist/src/core.js +33 -116
  4. package/dist/src/docs-index.js +1 -1
  5. package/dist/src/templates.js +0 -10
  6. package/package.json +1 -1
  7. package/templates/.agents/skills/agi-help/SKILL.md +1 -1
  8. package/templates/.agents/skills/code-guide-audit/SKILL.md +1 -5
  9. package/templates/.agents/skills/planning/SKILL.md +6 -10
  10. package/templates/.agents/skills/pr-review/SKILL.md +0 -1
  11. package/templates/.codex/agents/code-health-reviewer.toml +7 -5
  12. package/templates/.codex/agents/code-reviewer.toml +7 -5
  13. package/templates/.codex/agents/plan-reviewer.toml +7 -5
  14. package/templates/.waypoint/ACTIVE_PLANS.md +7 -7
  15. package/templates/.waypoint/README.md +5 -8
  16. package/templates/.waypoint/config.toml +0 -5
  17. package/templates/.waypoint/docs/README.md +1 -3
  18. package/templates/.waypoint/scripts/build-docs-index.mjs +25 -11
  19. package/templates/.waypoint/scripts/prepare-context.mjs +120 -205
  20. package/templates/WORKSPACE.md +2 -6
  21. package/templates/managed-agents-block.md +20 -11
  22. package/dist/src/track-index.js +0 -107
  23. package/templates/.agents/skills/break-it-qa/SKILL.md +0 -184
  24. package/templates/.agents/skills/break-it-qa/agents/openai.yaml +0 -4
  25. package/templates/.agents/skills/conversation-retrospective/SKILL.md +0 -147
  26. package/templates/.agents/skills/conversation-retrospective/agents/openai.yaml +0 -4
  27. package/templates/.agents/skills/docs-sync/SKILL.md +0 -78
  28. package/templates/.agents/skills/docs-sync/agents/openai.yaml +0 -4
  29. package/templates/.agents/skills/merge-ready-owner/SKILL.md +0 -196
  30. package/templates/.agents/skills/merge-ready-owner/agents/openai.yaml +0 -4
  31. package/templates/.agents/skills/pre-pr-hygiene/SKILL.md +0 -83
  32. package/templates/.agents/skills/pre-pr-hygiene/agents/openai.yaml +0 -4
  33. package/templates/.agents/skills/work-tracker/SKILL.md +0 -141
  34. package/templates/.agents/skills/work-tracker/agents/openai.yaml +0 -4
  35. package/templates/.agents/skills/workspace-compress/SKILL.md +0 -113
  36. package/templates/.agents/skills/workspace-compress/agents/openai.yaml +0 -4
  37. package/templates/.waypoint/SOUL.md +0 -71
  38. package/templates/.waypoint/agent-operating-manual.md +0 -109
  39. package/templates/.waypoint/scripts/build-track-index.mjs +0 -169
  40. package/templates/.waypoint/track/README.md +0 -38
  41. package/templates/.waypoint/track/_template.md +0 -48
@@ -1,109 +0,0 @@
1
- # Waypoint Agent Operating Manual
2
-
3
- This repository uses Waypoint as its operating system for Codex.
4
-
5
- These instructions are mandatory in this repo and override weaker generic guidance unless the user says otherwise.
6
-
7
- If the repo needs custom AGENTS guidance, write it outside the managed `waypoint:start/end` block in `AGENTS.md`. Treat the managed block as Waypoint-owned and replaceable.
8
- If a higher-priority instruction conflicts with Waypoint workflow, do not pretend the repo rule happened anyway. State the conflict plainly, explain the consequence, and ask the user for direction when needed.
9
-
10
- ## Session start
11
-
12
- Run the Waypoint bootstrap only at session start, after compaction, or when the user explicitly asks for it:
13
-
14
- 1. Run `node .waypoint/scripts/prepare-context.mjs`
15
- 2. Read `.waypoint/SOUL.md`
16
- 3. Read this file
17
- 4. Read `.waypoint/WORKSPACE.md`
18
- 5. Read `.waypoint/ACTIVE_PLANS.md`
19
- 6. Read `.waypoint/context/MANIFEST.md`
20
- 7. Read every file listed in that manifest
21
-
22
- ## Repository memory model
23
-
24
- The repository should contain the context the next agent needs.
25
-
26
- - user-scoped `AGENTS.md` holds cross-project preferences and standing rules
27
- - the repo root `AGENTS.md` holds durable repo context and always-on project rules
28
- - `.waypoint/WORKSPACE.md` holds live execution state
29
- - `.waypoint/ACTIVE_PLANS.md` holds the currently approved plan and active phase checkpoints
30
- - `.waypoint/track/` holds detailed execution state for long-running work
31
- - `.waypoint/docs/` holds durable project knowledge
32
- - `.waypoint/plans/` holds durable plan docs
33
- - `.waypoint/context/` holds the generated bootstrap bundle
34
-
35
- General always-on workflow rules belong in `AGENTS.md` and this manual, not only in optional helper skills. Workflow-specific method detail belongs in the relevant skill. After bootstrap, use progressive disclosure: read only the routed docs and files the current task actually needs.
36
-
37
- ## Working defaults
38
-
39
- - Fix root causes instead of papering over symptoms.
40
- - The default for refactors and migrations is contract replacement, not compatibility preservation.
41
- - Delete obsolete code aggressively. Remove stale branches, dead props, debug logs, compatibility scaffolding, unused files, and legacy paths as part of the change.
42
- - Large destructive edits are allowed when they are the clearest route to the approved target state.
43
- - Temporary breakage inside the active phase is acceptable. Do not stop there; finish the phase back to green.
44
- - Do the level of cleanup the real codebase requires. Do not use generic “stay narrow” heuristics to avoid the root-cause fix.
45
- - Keep communication concise and direct.
46
-
47
- ## Execution contract
48
-
49
- Once the user approves a plan or tells you to proceed, that approved scope is the execution contract.
50
-
51
- - Do not silently narrow, defer, or drop approved work.
52
- - Execute approved work phase by phase.
53
- - `WORKSPACE.md` and `ACTIVE_PLANS.md` are live files, not paperwork. Update them during the work, not after.
54
- - Once scope is approved, execute it without asking for permission again for obvious implementation steps, cleanup, validation, or documentation that the approved work requires.
55
- - Before reporting completion, reread `ACTIVE_PLANS.md`, the active tracker if one exists, `WORKSPACE.md`, and the relevant routed docs, then compare reality against the approved scope, current phase checkpoint, and acceptance criteria.
56
- - If that reread shows the work is not complete, keep going.
57
-
58
- Pause only when:
59
- - a real blocker prevents forward progress
60
- - a hidden-risk or non-obvious decision would materially change scope, behavior, cost, or data safety
61
- - you want to change approved scope or defer approved work
62
- - the user explicitly redirects, pauses, or narrows the work
63
-
64
- ## Refactors and migrations
65
-
66
- For migrations and refactors:
67
-
68
- - do a legacy seam inventory before implementation
69
- - list every remaining read path, write path, sync or worker path, route contract, frontend consumer, event payload, fixture, and test surface that still depends on the legacy shape
70
- - give each phase exact grep gates for the legacy symbols being removed
71
- - do not treat the phase as review-ready or complete while those grep gates still fail
72
- - when a contract cut changes the expected shape broadly, rewrite affected tests and fixtures in bulk for the new contract instead of dragging legacy test shapes forward through micro-edits
73
-
74
- ## Review and verification
75
-
76
- Reviewer passes are for real phase boundaries, PR-ready handoff, and final closeout.
77
-
78
- - Do not run heavyweight review loops after every tiny edit.
79
- - Do not spend reviewer passes on a phase that still has known legacy seams or grep-gate failures.
80
- - If reviewers find meaningful issues, fix them, rerun the relevant verification, and use fresh passes when needed.
81
-
82
- Verify your own work before reporting completion.
83
-
84
- - Match verification to the real risk surface.
85
- - For UI work, inspect the real UI and send screenshots when the environment allows it.
86
- - For backend or scripts, run code and inspect real output.
87
- - If the result is still incomplete or unproven, keep going.
88
-
89
- ## State and documentation
90
-
91
- - Update `WORKSPACE.md` whenever the active goal, phase, next step, blocker, checkpoint state, or verification state materially changes.
92
- - Update `ACTIVE_PLANS.md` whenever the active approved plan, current phase, checkpoint, or approved scope changes.
93
- - Use `.waypoint/track/` only when `WORKSPACE.md` is no longer enough to keep the work legible.
94
- - Persist corrections in the right durable layer instead of defaulting to `AGENTS.md`.
95
- - Update user-scoped `AGENTS.md` only for true cross-project standing rules.
96
- - Update repo `AGENTS.md` only for durable repo-wide context or always-on project rules.
97
- - Put workflow-specific corrections in the relevant skill, not in `AGENTS.md`.
98
- - Update `.waypoint/docs/` for durable project knowledge and `.waypoint/plans/` for durable plan changes.
99
-
100
- ## Final quality bar
101
-
102
- Before wrapping up, ask:
103
-
104
- - Did I solve the user's actual problem?
105
- - Did I finish the approved phase cleanly?
106
- - Are the live state files current?
107
- - Would the next agent understand what is going on from the repo?
108
-
109
- If not, keep going.
@@ -1,169 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { existsSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
4
- import path from "node:path";
5
- import { fileURLToPath } from "node:url";
6
-
7
- const VALID_TRACK_STATUSES = new Set(["active", "blocked", "paused", "done", "archived"]);
8
- const ACTIVE_TRACK_STATUSES = new Set(["active", "blocked", "paused"]);
9
- const SKIP_NAMES = new Set(["README.md", "CHANGELOG.md", "LICENSE.md"]);
10
-
11
- export function findProjectRoot(startDir) {
12
- let current = path.resolve(startDir);
13
- while (true) {
14
- if (existsSync(path.join(current, ".waypoint", "config.toml"))) {
15
- return current;
16
- }
17
- const parent = path.dirname(current);
18
- if (parent === current) {
19
- return path.resolve(startDir);
20
- }
21
- current = parent;
22
- }
23
- }
24
-
25
- function detectProjectRoot() {
26
- const scriptDir = path.dirname(fileURLToPath(import.meta.url));
27
- const scriptBasedRoot = findProjectRoot(path.resolve(scriptDir, "../.."));
28
- if (existsSync(path.join(scriptBasedRoot, ".waypoint", "config.toml"))) {
29
- return scriptBasedRoot;
30
- }
31
- return findProjectRoot(process.cwd());
32
- }
33
-
34
- function shouldSkipTrackFile(entry) {
35
- return SKIP_NAMES.has(entry) || entry.startsWith("_");
36
- }
37
-
38
- function parseFrontmatter(filePath) {
39
- const text = readFileSync(filePath, "utf8");
40
- if (!text.startsWith("---\n")) {
41
- return { summary: "", lastUpdated: "", readWhen: [], status: "" };
42
- }
43
-
44
- const endIndex = text.indexOf("\n---\n", 4);
45
- if (endIndex === -1) {
46
- return { summary: "", lastUpdated: "", readWhen: [], status: "" };
47
- }
48
-
49
- const frontmatter = text.slice(4, endIndex);
50
- let summary = "";
51
- let lastUpdated = "";
52
- let status = "";
53
- const readWhen = [];
54
- let collectingReadWhen = false;
55
-
56
- for (const rawLine of frontmatter.split("\n")) {
57
- const line = rawLine.trim();
58
- if (line.startsWith("summary:")) {
59
- summary = line.slice("summary:".length).trim().replace(/^['"]|['"]$/g, "");
60
- collectingReadWhen = false;
61
- continue;
62
- }
63
- if (line.startsWith("last_updated:")) {
64
- lastUpdated = line.slice("last_updated:".length).trim().replace(/^['"]|['"]$/g, "");
65
- collectingReadWhen = false;
66
- continue;
67
- }
68
- if (line.startsWith("status:")) {
69
- status = line.slice("status:".length).trim().replace(/^['"]|['"]$/g, "").toLowerCase();
70
- collectingReadWhen = false;
71
- continue;
72
- }
73
- if (line.startsWith("read_when:")) {
74
- collectingReadWhen = true;
75
- continue;
76
- }
77
- if (collectingReadWhen && line.startsWith("- ")) {
78
- readWhen.push(line.slice(2).trim());
79
- continue;
80
- }
81
- if (collectingReadWhen && line.length > 0) {
82
- collectingReadWhen = false;
83
- }
84
- }
85
-
86
- return { summary, lastUpdated, readWhen, status };
87
- }
88
-
89
- function walkTracks(projectRoot, currentDir, output, invalid) {
90
- for (const entry of readdirSync(currentDir)) {
91
- const fullPath = path.join(currentDir, entry);
92
- const stat = statSync(fullPath);
93
- if (stat.isDirectory()) {
94
- walkTracks(projectRoot, fullPath, output, invalid);
95
- continue;
96
- }
97
-
98
- if (!entry.endsWith(".md") || shouldSkipTrackFile(entry)) {
99
- continue;
100
- }
101
-
102
- const { summary, lastUpdated, readWhen, status } = parseFrontmatter(fullPath);
103
- if (!summary || !lastUpdated || readWhen.length === 0 || !VALID_TRACK_STATUSES.has(status)) {
104
- invalid.push(path.relative(projectRoot, fullPath));
105
- continue;
106
- }
107
-
108
- output.push({
109
- path: path.relative(projectRoot, fullPath),
110
- summary,
111
- readWhen,
112
- status,
113
- });
114
- }
115
- }
116
-
117
- export function renderTracksIndex(projectRoot) {
118
- const trackDir = path.join(projectRoot, ".waypoint", "track");
119
- const entries = [];
120
- const invalidTracks = [];
121
-
122
- if (existsSync(trackDir)) {
123
- walkTracks(projectRoot, trackDir, entries, invalidTracks);
124
- }
125
-
126
- const lines = [
127
- "# Tracks Index",
128
- "",
129
- "Auto-generated by `.waypoint/scripts/build-track-index.mjs`. Read active trackers when resuming long-running work.",
130
- "",
131
- "## .waypoint/track/",
132
- "",
133
- ];
134
-
135
- if (entries.length === 0) {
136
- lines.push("No tracker files found.");
137
- } else {
138
- entries.sort((a, b) => a.path.localeCompare(b.path));
139
- for (const entry of entries) {
140
- lines.push(`- **${entry.path}** — [${entry.status}] ${entry.summary}`);
141
- lines.push(` Read when: ${entry.readWhen.join("; ")}`);
142
- }
143
- }
144
-
145
- lines.push("");
146
- return {
147
- content: `${lines.join("\n")}\n`,
148
- invalidTracks,
149
- activeTracks: entries
150
- .filter((entry) => ACTIVE_TRACK_STATUSES.has(entry.status))
151
- .map((entry) => entry.path)
152
- .sort((a, b) => a.localeCompare(b)),
153
- };
154
- }
155
-
156
- export function writeTracksIndex(projectRoot) {
157
- const outputPath = path.join(projectRoot, ".waypoint", "TRACKS_INDEX.md");
158
- const rendered = renderTracksIndex(projectRoot);
159
- writeFileSync(outputPath, rendered.content, "utf8");
160
- return { outputPath, activeTracks: rendered.activeTracks, invalidTracks: rendered.invalidTracks };
161
- }
162
-
163
- const isDirectExecution = process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url);
164
-
165
- if (isDirectExecution) {
166
- const projectRoot = detectProjectRoot();
167
- const { outputPath } = writeTracksIndex(projectRoot);
168
- console.log(`Wrote ${outputPath}`);
169
- }
@@ -1,38 +0,0 @@
1
- # Waypoint Trackers
2
-
3
- This directory holds active execution trackers for long-running work.
4
-
5
- Use `.waypoint/track/` when the work is too large to fit safely in `WORKSPACE.md`, especially for:
6
-
7
- - multi-session implementation campaigns
8
- - broad audits followed by remediation
9
- - large fix lists or rollout work
10
- - verification or review loops that will take time to close
11
-
12
- Tracker files are **execution state**, not general project memory.
13
-
14
- - Keep durable architecture, decisions, and long-term reference material in `.waypoint/docs/`.
15
- - Keep `WORKSPACE.md` short and current.
16
- - Put detailed checklists, per-item status, blockers, and verification progress in `.waypoint/track/`.
17
-
18
- Every tracker needs YAML frontmatter:
19
-
20
- ```yaml
21
- ---
22
- summary: One-line description
23
- last_updated: "2026-03-13 11:38 PDT"
24
- status: active
25
- read_when:
26
- - resuming the workstream
27
- ---
28
- ```
29
-
30
- Valid tracker statuses:
31
-
32
- - `active`
33
- - `blocked`
34
- - `paused`
35
- - `done`
36
- - `archived`
37
-
38
- `WORKSPACE.md` should point at the active tracker file under `## Active Trackers`.
@@ -1,48 +0,0 @@
1
- ---
2
- summary: One-line description of the workstream
3
- last_updated: "2026-03-13 11:38 PDT"
4
- status: active
5
- read_when:
6
- - resuming this workstream
7
- ---
8
-
9
- # Tracker Title
10
-
11
- ## Goal
12
-
13
- What outcome this tracker is trying to reach.
14
-
15
- ## Source
16
-
17
- - User request, audit, plan, or review thread that kicked off the work.
18
-
19
- ## Current State
20
-
21
- - [2026-03-13 11:38 PDT] Current truth about the work.
22
-
23
- ## Next
24
-
25
- - [2026-03-13 11:38 PDT] The next concrete action.
26
-
27
- ## Workstreams
28
-
29
- ### 1. Stream Name
30
-
31
- - [ ] First task
32
- - [ ] Second task
33
-
34
- ## Phase Checkpoints
35
-
36
- - [ ] Checkpoint required before leaving the current phase
37
-
38
- ## Verification
39
-
40
- - [ ] Verification step
41
-
42
- ## Decisions
43
-
44
- - [2026-03-13 11:38 PDT] Decision and rationale.
45
-
46
- ## Notes
47
-
48
- - Useful details that do not belong in `WORKSPACE.md`.