@pedrocivita/tocket 2.2.2 → 2.4.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 CHANGED
@@ -1,6 +1,7 @@
1
1
  ![CI](https://github.com/pedrocivita/tocket/actions/workflows/ci.yml/badge.svg)
2
2
  [![npm](https://img.shields.io/npm/v/@pedrocivita/tocket)](https://www.npmjs.com/package/@pedrocivita/tocket)
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
4
+ [![Website](https://img.shields.io/badge/Website-tocket.ai-7C3AED)](https://tocket.ai)
4
5
 
5
6
  # Tocket
6
7
 
@@ -24,9 +25,9 @@ your-project/
24
25
  techContext.md # Stack and build tools
25
26
  productContext.md # What the product is and why
26
27
  progress.md # What's done, what's next
27
- TOCKET.md # Protocol rules (for any AI)
28
- CLAUDE.md # Executor agent config
29
- GEMINI.md # Architect agent config
28
+ TOCKET.md # Protocol rules (agent-agnostic)
29
+ CLAUDE.md # Executor instructions (auto-detected per agent)
30
+ GEMINI.md # Architect instructions (auto-detected per agent)
30
31
  ```
31
32
 
32
33
  All files are plain markdown, committed to git, and readable by any tool.
@@ -44,12 +45,15 @@ The CLI automates the scaffolding, provides smart defaults, and adds quality-of-
44
45
  ## Quick Start
45
46
 
46
47
  ```bash
47
- # Scaffold a new workspace (creates .context/, TOCKET.md, CLAUDE.md, GEMINI.md)
48
+ # Scaffold a new workspace
48
49
  npx @pedrocivita/tocket init
49
50
 
50
51
  # Or just the essentials (3 files)
51
52
  npx @pedrocivita/tocket init --minimal
52
53
 
54
+ # Configure your agents (optional — defaults to Claude Code + Gemini)
55
+ npx @pedrocivita/tocket config --architect "Gemini" --executor "Claude Code"
56
+
53
57
  # Or open the interactive dashboard
54
58
  npx @pedrocivita/tocket
55
59
  ```
@@ -63,7 +67,7 @@ Tocket writes files to your repo, but you can try it risk-free on a branch:
63
67
  ```bash
64
68
  git checkout -b test/tocket-setup
65
69
  npx @pedrocivita/tocket init
66
- git add .context/ TOCKET.md CLAUDE.md GEMINI.md .cursorrules
70
+ git add .context/ TOCKET.md CLAUDE.md GEMINI.md
67
71
  git commit -m "chore: scaffold Tocket workspace"
68
72
 
69
73
  # Try it out — run some AI sessions, see if you like it
@@ -80,7 +84,7 @@ See the [Developer Guide](docs/DEVELOPERS_GUIDE.md) for detailed safe-testing wo
80
84
  | Command | What it does |
81
85
  | --- | --- |
82
86
  | `tocket` | Interactive dashboard with guided menu |
83
- | `tocket init` | Scaffold `.context/`, `TOCKET.md`, and agent configs (auto-detects your stack) |
87
+ | `tocket init` | Scaffold `.context/`, `TOCKET.md`, and agent configs (auto-detects stack + agents) |
84
88
  | `tocket generate` | Build structured payload XML (auto-fills scope from git) |
85
89
  | `tocket sync` | Append session summary + git log to `.context/progress.md` |
86
90
  | `tocket validate` | Check if the workspace has a valid Memory Bank |
@@ -88,7 +92,7 @@ See the [Developer Guide](docs/DEVELOPERS_GUIDE.md) for detailed safe-testing wo
88
92
  | `tocket status` | Quick overview: workspace health, branch, focus, agents |
89
93
  | `tocket doctor` | Deep workspace diagnostics (content health, git tracking, staleness) |
90
94
  | `tocket lint` | Audit `.context/` content quality and suggest improvements |
91
- | `tocket config` | Manage global settings (`~/.tocketrc.json`) |
95
+ | `tocket config` | Manage global settings: agent roles, author, priority (`~/.tocketrc.json`) |
92
96
  | `tocket eject` | Remove all Tocket files (with confirmation) |
93
97
 
94
98
  ### CI-friendly flags
@@ -152,26 +156,46 @@ The Architect doesn't write code. The Executor doesn't make architecture decisio
152
156
  | Tool | What it does | How Tocket differs |
153
157
  | --- | --- | --- |
154
158
  | `.cursorrules` | Single-agent instructions for Cursor | Tocket defines _inter-agent_ protocol, not just single-agent rules |
155
- | `CLAUDE.md` | Instructions for Claude Code | Tocket generates `CLAUDE.md` as part of a broader multi-agent system |
159
+ | `CLAUDE.md` | Instructions for Claude Code | Tocket generates agent configs as part of a broader multi-agent system |
156
160
  | `AGENTS.md` | Codex agent instructions | Same idea for one agent; Tocket coordinates multiple agents |
157
161
  | Prompt templates | Static prompts for LLMs | Tocket's Memory Bank evolves with the project; payloads are structured, not freeform |
162
+ | Vendor-locked tools | Tied to one provider | Tocket works with **any LLM/tool** — configure via `tocket config` |
158
163
 
159
164
  ## Configuration
160
165
 
161
- Set global defaults so you don't repeat yourself:
166
+ Configure your preferred agents and defaults:
162
167
 
163
168
  ```bash
164
- # Interactive setup
165
- tocket config
169
+ # Configure your agent roles
170
+ tocket config --architect "Gemini" --executor "Claude Code"
166
171
 
167
- # Or use flags (CI-friendly)
172
+ # Set payload defaults
168
173
  tocket config --author "Your Name" --priority medium --skills "core,lsp"
169
174
 
175
+ # Or use the interactive setup (sections: Identity, Agent Roles, Payload Defaults)
176
+ tocket config
177
+
170
178
  # View current config
171
179
  tocket config --show
172
180
  ```
173
181
 
174
- Config is stored at `~/.tocketrc.json` and pre-fills author, priority, and skills in all commands.
182
+ Config is stored at `~/.tocketrc.json`.
183
+
184
+ ### Supported Agents
185
+
186
+ Tocket auto-generates the correct instruction file for each agent:
187
+
188
+ | Agent | Role | Generated File |
189
+ | --- | --- | --- |
190
+ | Claude Code | Executor | `CLAUDE.md` |
191
+ | Cursor | Executor | `.cursorrules` |
192
+ | Windsurf | Executor | `.windsurfrules` |
193
+ | Copilot | Executor | `.github/copilot-instructions.md` |
194
+ | Gemini | Architect | `GEMINI.md` |
195
+ | _(any other)_ | Executor | `EXECUTOR.md` |
196
+ | _(any other)_ | Architect | `ARCHITECT.md` |
197
+
198
+ Don't see your agent? It still works — unknown agents get generic files, and you can override any template via [`~/.tocket/templates/`](docs/DEVELOPERS_GUIDE.md).
175
199
 
176
200
  ## Documentation
177
201
 
@@ -181,10 +205,11 @@ Config is stored at `~/.tocketrc.json` and pre-fills author, priority, and skill
181
205
  | [Developer Guide](docs/DEVELOPERS_GUIDE.md) | How to run the Tocket protocol safely in any project |
182
206
  | [Tocket Rules](docs/TOCKET_RULES.md) | Complete reference for all protocol rules |
183
207
  | [Protocol Spec](TOCKET.md) | The agent-agnostic protocol specification |
208
+ | [Walkthrough](examples/walkthrough.md) | End-to-end payload exchange example |
184
209
 
185
210
  ## Contributing
186
211
 
187
- We welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md) to get started.
212
+ We welcome contributions! Visit [tocket.ai](https://tocket.ai) for an overview of the framework, then read our [Contributing Guide](CONTRIBUTING.md) to get started.
188
213
 
189
214
  This project follows a [Code of Conduct](CODE_OF_CONDUCT.md).
190
215
 
@@ -1,12 +1,15 @@
1
1
  import { input, select, confirm } from "@inquirer/prompts";
2
2
  import { getConfig, saveConfig, resetConfig, getConfigPath, } from "../utils/config.js";
3
+ import { DEFAULT_ARCHITECT, DEFAULT_EXECUTOR } from "../utils/agents.js";
3
4
  import { success, heading, dim } from "../utils/theme.js";
4
5
  export function registerConfigCommand(program) {
5
6
  program
6
7
  .command("config")
7
8
  .description("Manage global Tocket configuration (~/.tocketrc.json)")
8
9
  .option("--author <name>", "Set default author name")
9
- .option("--agent <name>", "Set default agent name")
10
+ .option("--agent <name>", "Set default agent name (deprecated, use --architect/--executor)")
11
+ .option("--architect <name>", "Set architect agent (e.g. Gemini, ChatGPT)")
12
+ .option("--executor <name>", "Set executor agent (e.g. \"Claude Code\", Cursor, Windsurf)")
10
13
  .option("--priority <level>", "Set default priority (high|medium|low)")
11
14
  .option("--skills <list>", "Set default skills (comma-separated)")
12
15
  .option("--show", "Display current configuration")
@@ -42,13 +45,24 @@ export function registerConfigCommand(program) {
42
45
  return;
43
46
  }
44
47
  // Non-interactive: handle individual flags
45
- const hasFlags = options.author || options.agent || options.priority || options.skills;
48
+ const hasFlags = options.author || options.agent || options.architect ||
49
+ options.executor || options.priority || options.skills;
46
50
  if (hasFlags) {
47
51
  const config = await getConfig();
48
52
  if (options.author)
49
53
  config.author = options.author;
50
54
  if (options.agent)
51
55
  config.defaultAgent = options.agent;
56
+ if (options.architect) {
57
+ if (!config.agents)
58
+ config.agents = {};
59
+ config.agents.architect = options.architect;
60
+ }
61
+ if (options.executor) {
62
+ if (!config.agents)
63
+ config.agents = {};
64
+ config.agents.executor = options.executor;
65
+ }
52
66
  if (options.priority) {
53
67
  if (!config.defaults)
54
68
  config.defaults = {};
@@ -66,14 +80,24 @@ export function registerConfigCommand(program) {
66
80
  // Interactive TUI mode
67
81
  const current = await getConfig();
68
82
  console.log(heading("\n Tocket Configuration\n"));
83
+ // ── Identity ──
84
+ console.log(dim(" ── Identity ──\n"));
69
85
  const author = await input({
70
86
  message: "Author name:",
71
87
  default: current.author || undefined,
72
88
  });
73
- const agent = await input({
74
- message: "Default agent name:",
75
- default: current.defaultAgent || undefined,
89
+ // ── Agent Roles ──
90
+ console.log(dim("\n ── Agent Roles ──\n"));
91
+ const architect = await input({
92
+ message: "Architect (planner):",
93
+ default: current.agents?.architect || DEFAULT_ARCHITECT,
76
94
  });
95
+ const executor = await input({
96
+ message: "Executor (implementer):",
97
+ default: current.agents?.executor || DEFAULT_EXECUTOR,
98
+ });
99
+ // ── Payload Defaults ──
100
+ console.log(dim("\n ── Payload Defaults ──\n"));
77
101
  const priority = await select({
78
102
  message: "Default priority:",
79
103
  choices: [
@@ -90,7 +114,10 @@ export function registerConfigCommand(program) {
90
114
  await saveConfig({
91
115
  ...current,
92
116
  author: author || undefined,
93
- defaultAgent: agent || undefined,
117
+ agents: {
118
+ architect: architect || undefined,
119
+ executor: executor || undefined,
120
+ },
94
121
  defaults: {
95
122
  priority: priority,
96
123
  skills: skills || undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"config.cmd.js","sourceRoot":"","sources":["../../src/commands/config.cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.cmd.js","sourceRoot":"","sources":["../../src/commands/config.cmd.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { input, confirm } from "@inquirer/prompts";
2
2
  import { mkdir, readFile, writeFile, access } from "node:fs/promises";
3
- import { join } from "node:path";
3
+ import { join, dirname } from "node:path";
4
4
  import { banner, heading, info, success, warn, dim } from "../utils/theme.js";
5
5
  import { isContextIgnored } from "../utils/git.js";
6
6
  import { getConfig } from "../utils/config.js";
7
- import { claudeMd, geminiMd, tocketMd, activeContextMd, systemPatternsMd, productContextMd, techContextMd, progressMd, cursorrulesMd, } from "../templates/memory-bank.js";
7
+ import { readGlobalTemplate } from "../utils/templates.js";
8
+ import { getExecutorFileName, getArchitectFileName, getExecutorDisplayName, getArchitectDisplayName, } from "../utils/agents.js";
9
+ import { executorMd, architectMd, tocketMd, activeContextMd, systemPatternsMd, productContextMd, techContextMd, progressMd, cursorrulesMd, } from "../templates/memory-bank.js";
8
10
  async function fileExists(path) {
9
11
  try {
10
12
  await access(path);
@@ -163,13 +165,19 @@ export function registerInitCommand(program) {
163
165
  });
164
166
  const contextDir = join(cwd, ".context");
165
167
  await mkdir(contextDir, { recursive: true });
168
+ // Resolve agent names and file conventions
169
+ const executorName = getExecutorDisplayName(globalConfig.agents?.executor);
170
+ const architectName = getArchitectDisplayName(globalConfig.agents?.architect);
171
+ const executorFile = getExecutorFileName(globalConfig.agents?.executor);
172
+ const architectFile = getArchitectFileName(globalConfig.agents?.architect);
166
173
  const files = [
167
- ["TOCKET.md", tocketMd(projectName)],
168
- ["CLAUDE.md", claudeMd(projectName, description)],
169
- ["GEMINI.md", geminiMd(projectName, description)],
170
- [".cursorrules", cursorrulesMd(projectName, description)],
174
+ ["TOCKET.md", tocketMd(projectName, executorFile, architectFile)],
175
+ [executorFile, executorFile === ".cursorrules"
176
+ ? cursorrulesMd(projectName, description, architectFile)
177
+ : executorMd(projectName, description, executorName, architectFile)],
178
+ [architectFile, architectMd(projectName, description, architectName, executorName, executorFile)],
171
179
  [join(".context", "activeContext.md"), activeContextMd(projectName)],
172
- [join(".context", "systemPatterns.md"), systemPatternsMd(projectName)],
180
+ [join(".context", "systemPatterns.md"), systemPatternsMd(projectName, architectName, executorName)],
173
181
  [
174
182
  join(".context", "productContext.md"),
175
183
  productContextMd(projectName, description),
@@ -188,7 +196,16 @@ export function registerInitCommand(program) {
188
196
  const filesToWrite = minimal
189
197
  ? files.filter(([path]) => minimalPaths.has(path))
190
198
  : files;
191
- for (const [filePath, content] of filesToWrite) {
199
+ const templateVars = {
200
+ projectName,
201
+ description,
202
+ date: new Date().toISOString().split("T")[0],
203
+ architectName,
204
+ executorName,
205
+ architectFile,
206
+ executorFile,
207
+ };
208
+ for (const [filePath, builtInContent] of filesToWrite) {
192
209
  const fullPath = join(cwd, filePath);
193
210
  const exists = await fileExists(fullPath);
194
211
  if (exists && !force) {
@@ -201,6 +218,9 @@ export function registerInitCommand(program) {
201
218
  continue;
202
219
  }
203
220
  }
221
+ await mkdir(dirname(fullPath), { recursive: true });
222
+ const userContent = await readGlobalTemplate(filePath, templateVars);
223
+ const content = userContent ?? builtInContent;
204
224
  await writeFile(fullPath, content, "utf-8");
205
225
  console.log(" " + success(`${exists ? "updated" : "created"} ${filePath}`));
206
226
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.cmd.js","sourceRoot":"","sources":["../../src/commands/init.cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.cmd.js","sourceRoot":"","sources":["../../src/commands/init.cmd.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,16 @@ export interface StackInfo {
5
5
  framework: string;
6
6
  extras: string[];
7
7
  }
8
- export declare const claudeMd: (projectName: string, description: string) => string;
9
- export declare const geminiMd: (projectName: string, description: string) => string;
8
+ export declare const executorMd: (projectName: string, description: string, executorName?: string, architectFile?: string) => string;
9
+ /** @deprecated Use executorMd instead */
10
+ export declare const claudeMd: (projectName: string, description: string, executorName?: string, architectFile?: string) => string;
11
+ export declare const architectMd: (projectName: string, description: string, architectName?: string, executorName?: string, executorFile?: string) => string;
12
+ /** @deprecated Use architectMd instead */
13
+ export declare const geminiMd: (projectName: string, description: string, architectName?: string, executorName?: string, executorFile?: string) => string;
10
14
  export declare const activeContextMd: (projectName: string) => string;
11
- export declare const systemPatternsMd: (projectName: string) => string;
15
+ export declare const systemPatternsMd: (projectName: string, architectName?: string, executorName?: string) => string;
12
16
  export declare const productContextMd: (projectName: string, description: string) => string;
13
17
  export declare const techContextMd: (projectName: string, stack?: StackInfo) => string;
14
18
  export declare const progressMd: (projectName: string) => string;
15
- export declare const cursorrulesMd: (projectName: string, description: string) => string;
16
- export declare const tocketMd: (projectName: string) => string;
19
+ export declare const cursorrulesMd: (projectName: string, description: string, architectFile?: string) => string;
20
+ export declare const tocketMd: (projectName: string, executorFile?: string, architectFile?: string) => string;
@@ -1,11 +1,11 @@
1
- export const claudeMd = (projectName, description) => `# CLAUDE.md - ${projectName}
1
+ export const executorMd = (projectName, description, executorName = "Claude Code", architectFile = "GEMINI.md") => `# ${projectName} — Executor Instructions
2
2
 
3
- <!-- LLM_CONTEXT: Executor instructions for Claude Code -->
3
+ <!-- LLM_CONTEXT: Executor instructions for ${executorName} -->
4
4
  <!-- Generated by Tocket CLI -->
5
5
 
6
6
  ## Role
7
7
 
8
- You are the **Executor** for **${projectName}**.
8
+ You are the **Executor** (${executorName}) for **${projectName}**.
9
9
  ${description ? `\n> ${description}\n` : ""}
10
10
  Your job is to **implement**, not to plan. Read the Memory Bank before every session, follow the Architect's decisions, and write code.
11
11
 
@@ -14,7 +14,7 @@ Your job is to **implement**, not to plan. Read the Memory Bank before every ses
14
14
  ## Rules
15
15
 
16
16
  1. **Always read \`.context/\` first** — Start every session by reading activeContext.md and systemPatterns.md.
17
- 2. **Follow the Architect's plan** — Implementation decisions come from GEMINI.md or mission briefs. Do not redesign.
17
+ 2. **Follow the Architect's plan** — Implementation decisions come from \`${architectFile}\` or mission briefs. Do not redesign.
18
18
  3. **Ask before deviating** — If the plan is unclear or blocked, ask the user. Do not improvise architecture.
19
19
  4. **Write code in English** — Variables, functions, comments, commits — all in \`en-US\`.
20
20
  5. **Update Memory Bank on completion** — After finishing a task, update activeContext.md with what changed.
@@ -27,7 +27,7 @@ Your job is to **implement**, not to plan. Read the Memory Bank before every ses
27
27
  |------|---------|
28
28
  | \`.context/activeContext.md\` | Current focus, recent changes, open decisions |
29
29
  | \`.context/systemPatterns.md\` | Architecture patterns, tech stack, conventions |
30
- | \`GEMINI.md\` | Architect instructions (read-only for you) |
30
+ | \`${architectFile}\` | Architect instructions (read-only for you) |
31
31
 
32
32
  ---
33
33
 
@@ -37,16 +37,18 @@ Your job is to **implement**, not to plan. Read the Memory Bank before every ses
37
37
  1. Read .context/ → 2. Receive task → 3. Implement → 4. Update .context/
38
38
  \`\`\`
39
39
  `;
40
- export const geminiMd = (projectName, description) => `# GEMINI.md - ${projectName}
40
+ /** @deprecated Use executorMd instead */
41
+ export const claudeMd = executorMd;
42
+ export const architectMd = (projectName, description, architectName = "Gemini", executorName = "Claude Code", executorFile = "CLAUDE.md") => `# ${projectName} — Architect Instructions
41
43
 
42
- <!-- LLM_CONTEXT: Architect instructions for Gemini -->
44
+ <!-- LLM_CONTEXT: Architect instructions for ${architectName} -->
43
45
  <!-- Generated by Tocket CLI -->
44
46
 
45
47
  ## Role
46
48
 
47
- You are the **Architect** (Planner) for **${projectName}**.
49
+ You are the **Architect** (${architectName}) for **${projectName}**.
48
50
  ${description ? `\n> ${description}\n` : ""}
49
- Your job is to **analyze, plan, and decide**. You do not write code directly — you produce structured mission briefs that the Executor (Claude Code) implements.
51
+ Your job is to **analyze, plan, and decide**. You do not write code directly — you produce structured mission briefs that the Executor (${executorName}) implements.
50
52
 
51
53
  ---
52
54
 
@@ -66,7 +68,7 @@ Your job is to **analyze, plan, and decide**. You do not write code directly —
66
68
  |------|---------|
67
69
  | \`.context/activeContext.md\` | Current focus, recent changes, open decisions |
68
70
  | \`.context/systemPatterns.md\` | Architecture patterns, tech stack, conventions |
69
- | \`CLAUDE.md\` | Executor instructions (read-only for you) |
71
+ | \`${executorFile}\` | Executor instructions (read-only for you) |
70
72
 
71
73
  ---
72
74
 
@@ -97,6 +99,8 @@ Your job is to **analyze, plan, and decide**. You do not write code directly —
97
99
  </payload>
98
100
  \`\`\`
99
101
  `;
102
+ /** @deprecated Use architectMd instead */
103
+ export const geminiMd = architectMd;
100
104
  export const activeContextMd = (projectName) => `# Active Context - ${projectName}
101
105
 
102
106
  <!-- Updated by both Architect and Executor after each session -->
@@ -115,7 +119,7 @@ _No active tasks yet. Run \`tocket generate\` to create your first mission brief
115
119
 
116
120
  _None yet._
117
121
  `;
118
- export const systemPatternsMd = (projectName) => `# System Patterns - ${projectName}
122
+ export const systemPatternsMd = (projectName, architectName = "Gemini", executorName = "Claude Code") => `# System Patterns - ${projectName}
119
123
 
120
124
  <!-- Architectural decisions and conventions. Updated by the Architect. -->
121
125
 
@@ -131,7 +135,7 @@ _To be defined._
131
135
 
132
136
  - Code language: \`en-US\`
133
137
  - Commit language: \`en-US\`
134
- - Triangulation: Gemini (Architect) + Claude (Executor)
138
+ - Triangulation: ${architectName} (Architect) + ${executorName} (Executor)
135
139
 
136
140
  ## Key Decisions
137
141
 
@@ -212,20 +216,20 @@ export const progressMd = (projectName) => `# Progress Log - ${projectName}
212
216
 
213
217
  - [ ] _Define your first milestone here_
214
218
  `;
215
- export const cursorrulesMd = (projectName, description) => `# .cursorrules - ${projectName}
219
+ export const cursorrulesMd = (projectName, description, architectFile = "ARCHITECT.md") => `# .cursorrules - ${projectName}
216
220
 
217
221
  # Generated by Tocket CLI — compatible with Cursor IDE
218
222
 
219
223
  ## Role
220
224
 
221
- You are the **Executor** for **${projectName}**.
225
+ You are the **Executor** (Cursor) for **${projectName}**.
222
226
  ${description ? `\n> ${description}\n` : ""}
223
227
  Your job is to **implement**, not to plan. Read the Memory Bank before every session, follow the Architect's decisions, and write code.
224
228
 
225
229
  ## Rules
226
230
 
227
231
  1. **Always read \`.context/\` first** — Start every session by reading activeContext.md and systemPatterns.md.
228
- 2. **Follow the Architect's plan** — Implementation decisions come from mission briefs. Do not redesign.
232
+ 2. **Follow the Architect's plan** — Implementation decisions come from \`${architectFile}\` or mission briefs. Do not redesign.
229
233
  3. **Ask before deviating** — If the plan is unclear or blocked, ask the user. Do not improvise architecture.
230
234
  4. **Write code in English** — Variables, functions, comments, commits — all in \`en-US\`.
231
235
  5. **Update Memory Bank on completion** — After finishing a task, update activeContext.md with what changed.
@@ -236,7 +240,7 @@ Your job is to **implement**, not to plan. Read the Memory Bank before every ses
236
240
  |------|---------|
237
241
  | \`.context/activeContext.md\` | Current focus, recent changes, open decisions |
238
242
  | \`.context/systemPatterns.md\` | Architecture patterns, tech stack, conventions |
239
- | \`.context/techContext.md\` | Stack, build tools, critical rules |
243
+ | \`${architectFile}\` | Architect instructions (read-only for you) |
240
244
 
241
245
  ## Workflow
242
246
 
@@ -244,7 +248,7 @@ Your job is to **implement**, not to plan. Read the Memory Bank before every ses
244
248
  1. Read .context/ → 2. Receive task → 3. Implement → 4. Update .context/
245
249
  \`\`\`
246
250
  `;
247
- export const tocketMd = (projectName) => `# Tocket Protocol Specification
251
+ export const tocketMd = (projectName, executorFile = "CLAUDE.md", architectFile = "GEMINI.md") => `# Tocket Protocol Specification
248
252
 
249
253
  > How any AI agent should operate in **${projectName}**.
250
254
 
@@ -342,7 +346,7 @@ A payload is the structured handoff from Architect to Executor.
342
346
 
343
347
  1. Read this file (\`TOCKET.md\`)
344
348
  2. Read \`.context/activeContext.md\` for current state
345
- 3. Read your role-specific config (\`CLAUDE.md\` or \`GEMINI.md\`)
349
+ 3. Read your role-specific config (\`${executorFile}\` or \`${architectFile}\`)
346
350
  4. Proceed with your task, following the Memory Bank rules above
347
351
  `;
348
352
  //# sourceMappingURL=memory-bank.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-bank.js","sourceRoot":"","sources":["../../src/templates/memory-bank.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-bank.js","sourceRoot":"","sources":["../../src/templates/memory-bank.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,102 @@
1
+ import { describe, it } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { getExecutorFileName, getArchitectFileName, getExecutorDisplayName, getArchitectDisplayName, DEFAULT_EXECUTOR, DEFAULT_ARCHITECT, EXECUTOR_FILE_MAP, ARCHITECT_FILE_MAP, } from "../utils/agents.js";
4
+ // ─── getExecutorFileName ────────────────────────────────────────────
5
+ describe("getExecutorFileName", () => {
6
+ it("returns CLAUDE.md for 'Claude Code'", () => {
7
+ assert.equal(getExecutorFileName("Claude Code"), "CLAUDE.md");
8
+ });
9
+ it("returns CLAUDE.md for 'Claude'", () => {
10
+ assert.equal(getExecutorFileName("Claude"), "CLAUDE.md");
11
+ });
12
+ it("returns .cursorrules for 'Cursor'", () => {
13
+ assert.equal(getExecutorFileName("Cursor"), ".cursorrules");
14
+ });
15
+ it("returns .windsurfrules for 'Windsurf'", () => {
16
+ assert.equal(getExecutorFileName("Windsurf"), ".windsurfrules");
17
+ });
18
+ it("returns .github/copilot-instructions.md for 'Copilot'", () => {
19
+ assert.equal(getExecutorFileName("Copilot"), ".github/copilot-instructions.md");
20
+ });
21
+ it("is case-insensitive", () => {
22
+ assert.equal(getExecutorFileName("CLAUDE CODE"), "CLAUDE.md");
23
+ assert.equal(getExecutorFileName("cursor"), ".cursorrules");
24
+ assert.equal(getExecutorFileName("WINDSURF"), ".windsurfrules");
25
+ });
26
+ it("returns EXECUTOR.md for unknown agents", () => {
27
+ assert.equal(getExecutorFileName("DeepSeek"), "EXECUTOR.md");
28
+ assert.equal(getExecutorFileName("GPT-4o"), "EXECUTOR.md");
29
+ assert.equal(getExecutorFileName("Cline"), "EXECUTOR.md");
30
+ });
31
+ it("returns CLAUDE.md when undefined", () => {
32
+ assert.equal(getExecutorFileName(undefined), "CLAUDE.md");
33
+ });
34
+ it("returns CLAUDE.md when no argument provided", () => {
35
+ assert.equal(getExecutorFileName(), "CLAUDE.md");
36
+ });
37
+ });
38
+ // ─── getArchitectFileName ───────────────────────────────────────────
39
+ describe("getArchitectFileName", () => {
40
+ it("returns GEMINI.md for 'Gemini'", () => {
41
+ assert.equal(getArchitectFileName("Gemini"), "GEMINI.md");
42
+ });
43
+ it("is case-insensitive", () => {
44
+ assert.equal(getArchitectFileName("GEMINI"), "GEMINI.md");
45
+ assert.equal(getArchitectFileName("gemini"), "GEMINI.md");
46
+ });
47
+ it("returns ARCHITECT.md for unknown agents", () => {
48
+ assert.equal(getArchitectFileName("ChatGPT"), "ARCHITECT.md");
49
+ assert.equal(getArchitectFileName("Claude"), "ARCHITECT.md");
50
+ assert.equal(getArchitectFileName("o1"), "ARCHITECT.md");
51
+ });
52
+ it("returns GEMINI.md when undefined", () => {
53
+ assert.equal(getArchitectFileName(undefined), "GEMINI.md");
54
+ });
55
+ it("returns GEMINI.md when no argument provided", () => {
56
+ assert.equal(getArchitectFileName(), "GEMINI.md");
57
+ });
58
+ });
59
+ // ─── getExecutorDisplayName ─────────────────────────────────────────
60
+ describe("getExecutorDisplayName", () => {
61
+ it("returns the given name when provided", () => {
62
+ assert.equal(getExecutorDisplayName("Cursor"), "Cursor");
63
+ });
64
+ it("returns DEFAULT_EXECUTOR when undefined", () => {
65
+ assert.equal(getExecutorDisplayName(undefined), DEFAULT_EXECUTOR);
66
+ });
67
+ it("returns DEFAULT_EXECUTOR when empty string", () => {
68
+ assert.equal(getExecutorDisplayName(""), DEFAULT_EXECUTOR);
69
+ });
70
+ });
71
+ // ─── getArchitectDisplayName ────────────────────────────────────────
72
+ describe("getArchitectDisplayName", () => {
73
+ it("returns the given name when provided", () => {
74
+ assert.equal(getArchitectDisplayName("ChatGPT"), "ChatGPT");
75
+ });
76
+ it("returns DEFAULT_ARCHITECT when undefined", () => {
77
+ assert.equal(getArchitectDisplayName(undefined), DEFAULT_ARCHITECT);
78
+ });
79
+ it("returns DEFAULT_ARCHITECT when empty string", () => {
80
+ assert.equal(getArchitectDisplayName(""), DEFAULT_ARCHITECT);
81
+ });
82
+ });
83
+ // ─── Constants ──────────────────────────────────────────────────────
84
+ describe("agent constants", () => {
85
+ it("DEFAULT_EXECUTOR is Claude Code", () => {
86
+ assert.equal(DEFAULT_EXECUTOR, "Claude Code");
87
+ });
88
+ it("DEFAULT_ARCHITECT is Gemini", () => {
89
+ assert.equal(DEFAULT_ARCHITECT, "Gemini");
90
+ });
91
+ it("EXECUTOR_FILE_MAP has expected entries", () => {
92
+ assert.ok("claude code" in EXECUTOR_FILE_MAP);
93
+ assert.ok("claude" in EXECUTOR_FILE_MAP);
94
+ assert.ok("cursor" in EXECUTOR_FILE_MAP);
95
+ assert.ok("windsurf" in EXECUTOR_FILE_MAP);
96
+ assert.ok("copilot" in EXECUTOR_FILE_MAP);
97
+ });
98
+ it("ARCHITECT_FILE_MAP has expected entries", () => {
99
+ assert.ok("gemini" in ARCHITECT_FILE_MAP);
100
+ });
101
+ });
102
+ //# sourceMappingURL=agents.test.js.map