@pedrocivita/tocket 2.1.0 → 2.2.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 (69) hide show
  1. package/README.md +193 -141
  2. package/dist/commands/config.cmd.js +1 -0
  3. package/dist/commands/config.cmd.js.map +1 -0
  4. package/dist/commands/dashboard.js +3 -0
  5. package/dist/commands/dashboard.js.map +1 -0
  6. package/dist/commands/doctor.cmd.d.ts +9 -0
  7. package/dist/commands/doctor.cmd.js +192 -0
  8. package/dist/commands/doctor.cmd.js.map +1 -0
  9. package/dist/commands/eject.cmd.js +1 -0
  10. package/dist/commands/eject.cmd.js.map +1 -0
  11. package/dist/commands/focus.cmd.js +1 -0
  12. package/dist/commands/focus.cmd.js.map +1 -0
  13. package/dist/commands/generate.cmd.d.ts +8 -0
  14. package/dist/commands/generate.cmd.js +28 -10
  15. package/dist/commands/generate.cmd.js.map +1 -0
  16. package/dist/commands/init.cmd.d.ts +1 -0
  17. package/dist/commands/init.cmd.js +40 -4
  18. package/dist/commands/init.cmd.js.map +1 -0
  19. package/dist/commands/lint.cmd.d.ts +12 -0
  20. package/dist/commands/lint.cmd.js +270 -0
  21. package/dist/commands/lint.cmd.js.map +1 -0
  22. package/dist/commands/status.cmd.js +1 -0
  23. package/dist/commands/status.cmd.js.map +1 -0
  24. package/dist/commands/sync.cmd.js +4 -2
  25. package/dist/commands/sync.cmd.js.map +1 -0
  26. package/dist/commands/validate.cmd.d.ts +7 -0
  27. package/dist/commands/validate.cmd.js +4 -3
  28. package/dist/commands/validate.cmd.js.map +1 -0
  29. package/dist/index.js +5 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/templates/memory-bank.js +1 -0
  32. package/dist/templates/memory-bank.js.map +1 -0
  33. package/dist/tests/config.test.js +1 -0
  34. package/dist/tests/config.test.js.map +1 -0
  35. package/dist/tests/doctor.test.d.ts +1 -0
  36. package/dist/tests/doctor.test.js +103 -0
  37. package/dist/tests/doctor.test.js.map +1 -0
  38. package/dist/tests/eject.test.js +1 -0
  39. package/dist/tests/eject.test.js.map +1 -0
  40. package/dist/tests/focus.test.js +1 -0
  41. package/dist/tests/focus.test.js.map +1 -0
  42. package/dist/tests/generate.test.d.ts +1 -0
  43. package/dist/tests/generate.test.js +68 -0
  44. package/dist/tests/generate.test.js.map +1 -0
  45. package/dist/tests/git.test.js +10 -1
  46. package/dist/tests/git.test.js.map +1 -0
  47. package/dist/tests/init.test.d.ts +1 -0
  48. package/dist/tests/init.test.js +98 -0
  49. package/dist/tests/init.test.js.map +1 -0
  50. package/dist/tests/lint.test.d.ts +1 -0
  51. package/dist/tests/lint.test.js +121 -0
  52. package/dist/tests/lint.test.js.map +1 -0
  53. package/dist/tests/memory-bank.test.js +1 -0
  54. package/dist/tests/memory-bank.test.js.map +1 -0
  55. package/dist/tests/status.test.js +1 -0
  56. package/dist/tests/status.test.js.map +1 -0
  57. package/dist/tests/theme.test.js +1 -0
  58. package/dist/tests/theme.test.js.map +1 -0
  59. package/dist/tests/validate.test.d.ts +1 -0
  60. package/dist/tests/validate.test.js +93 -0
  61. package/dist/tests/validate.test.js.map +1 -0
  62. package/dist/utils/config.js +1 -0
  63. package/dist/utils/config.js.map +1 -0
  64. package/dist/utils/git.d.ts +1 -0
  65. package/dist/utils/git.js +14 -0
  66. package/dist/utils/git.js.map +1 -0
  67. package/dist/utils/theme.js +1 -0
  68. package/dist/utils/theme.js.map +1 -0
  69. package/package.json +4 -2
@@ -1,9 +1,9 @@
1
1
  import { input, select, confirm } from "@inquirer/prompts";
2
- import clipboard from "clipboardy";
2
+ import { writeFileSync } from "node:fs";
3
3
  import { success, heading, dim, banner } from "../utils/theme.js";
4
4
  import { getConfig } from "../utils/config.js";
5
- import { getStagedFiles, getModifiedFiles } from "../utils/git.js";
6
- function buildPayloadXml(tasks) {
5
+ import { getStagedFiles, getModifiedFiles, getLastCommitMessage } from "../utils/git.js";
6
+ export function buildPayloadXml(tasks) {
7
7
  const first = tasks[0];
8
8
  const skillsAttr = first.skills.trim()
9
9
  ? `\n <skills>${first.skills.trim()}</skills>`
@@ -36,7 +36,7 @@ ${taskBlocks}
36
36
  </validate>
37
37
  </payload>`;
38
38
  }
39
- function suggestScope() {
39
+ export function suggestScope() {
40
40
  const staged = getStagedFiles();
41
41
  const modified = getModifiedFiles();
42
42
  const all = [...new Set([...staged, ...modified])];
@@ -47,6 +47,7 @@ export function registerGenerateCommand(program) {
47
47
  .command("generate")
48
48
  .description("Build payload XMLs interactively for Architect-Executor handoff")
49
49
  .option("--no-preview", "Skip payload preview before copying")
50
+ .option("--to <target>", "Output target: clipboard (default), stdout, or file path")
50
51
  .action(async (options) => {
51
52
  const config = await getConfig();
52
53
  if (!config.theme?.disableBanner) {
@@ -62,7 +63,11 @@ export function registerGenerateCommand(program) {
62
63
  if (taskNum > 1) {
63
64
  console.log(heading(`\n Task ${taskNum}\n`));
64
65
  }
65
- const intent = await input({ message: "Intent (goal in one line):" });
66
+ const lastCommit = getLastCommitMessage();
67
+ const intent = await input({
68
+ message: "Intent (goal in one line):",
69
+ default: lastCommit || undefined,
70
+ });
66
71
  const scope = await input({
67
72
  message: "Scope (files/folders affected):",
68
73
  default: taskNum === 1 && suggestedScope ? suggestedScope : undefined,
@@ -97,10 +102,23 @@ export function registerGenerateCommand(program) {
97
102
  console.log(dim(preview));
98
103
  console.log(dim("--- End Preview ---\n"));
99
104
  }
100
- clipboard.writeSync(xml);
101
- console.log(success(`Payload XML (v2.0) copied to clipboard!`) +
102
- dim(` ${tasks.length} task(s).`) +
103
- "\n" +
104
- dim(" Paste it into your Architect to continue.\n"));
105
+ const target = options.to ?? "clipboard";
106
+ if (target === "stdout") {
107
+ console.log(xml);
108
+ }
109
+ else if (target === "clipboard") {
110
+ const { default: clipboard } = await import("clipboardy");
111
+ clipboard.writeSync(xml);
112
+ console.log(success(`Payload XML (v2.0) copied to clipboard!`) +
113
+ dim(` ${tasks.length} task(s).`) +
114
+ "\n" +
115
+ dim(" Paste it into your Architect to continue.\n"));
116
+ }
117
+ else {
118
+ writeFileSync(target, xml, "utf-8");
119
+ console.log(success(`Payload XML (v2.0) written to ${target}!`) +
120
+ dim(` ${tasks.length} task(s).\n`));
121
+ }
105
122
  });
106
123
  }
124
+ //# sourceMappingURL=generate.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.cmd.js","sourceRoot":"","sources":["../../src/commands/generate.cmd.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import type { Command } from "commander";
2
+ export declare function checkGitignoreConflict(cwd: string): string | null;
2
3
  export declare function registerInitCommand(program: Command): void;
@@ -1,7 +1,9 @@
1
1
  import { input, confirm } from "@inquirer/prompts";
2
2
  import { mkdir, readFile, writeFile, access } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
- import { banner, heading, info, success, dim } from "../utils/theme.js";
4
+ import { execSync } from "node:child_process";
5
+ import { banner, heading, info, success, warn, dim } from "../utils/theme.js";
6
+ import { isGitRepo } from "../utils/git.js";
5
7
  import { getConfig } from "../utils/config.js";
6
8
  import { claudeMd, geminiMd, tocketMd, activeContextMd, systemPatternsMd, productContextMd, techContextMd, progressMd, cursorrulesMd, } from "../templates/memory-bank.js";
7
9
  async function fileExists(path) {
@@ -114,13 +116,34 @@ async function detectStack(cwd) {
114
116
  detectedDescription: pkg.description ?? "",
115
117
  };
116
118
  }
119
+ export function checkGitignoreConflict(cwd) {
120
+ if (!isGitRepo(cwd))
121
+ return null;
122
+ try {
123
+ const output = execSync("git check-ignore .context/", {
124
+ cwd,
125
+ encoding: "utf-8",
126
+ }).trim();
127
+ if (output) {
128
+ return ".context/ is listed in .gitignore — agents won't see committed context. Remove it from .gitignore to use Tocket.";
129
+ }
130
+ }
131
+ catch {
132
+ // exit code 1 = not ignored (good)
133
+ }
134
+ return null;
135
+ }
117
136
  export function registerInitCommand(program) {
118
137
  program
119
138
  .command("init")
120
139
  .description("Scaffold an agentic workspace with Memory Bank and triangulation config")
121
140
  .option("-f, --force", "Overwrite existing files without prompting")
141
+ .option("--minimal", "Scaffold only essential files (.context/ + TOCKET.md)")
142
+ .option("--name <name>", "Project name (skip prompt)")
143
+ .option("--description <desc>", "Project description (skip prompt)")
122
144
  .action(async (options) => {
123
145
  const force = options.force ?? false;
146
+ const minimal = options.minimal ?? false;
124
147
  const cwd = process.cwd();
125
148
  const globalConfig = await getConfig();
126
149
  if (!globalConfig.theme?.disableBanner) {
@@ -142,11 +165,11 @@ export function registerInitCommand(program) {
142
165
  console.log(info(`Extras: ${stack.extras.join(", ")}`));
143
166
  console.log();
144
167
  }
145
- const projectName = await input({
168
+ const projectName = options.name ?? await input({
146
169
  message: "Project Name:",
147
170
  default: detectedName || undefined,
148
171
  });
149
- const description = await input({
172
+ const description = options.description ?? await input({
150
173
  message: "Short Description:",
151
174
  default: detectedDescription || undefined,
152
175
  });
@@ -169,7 +192,15 @@ export function registerInitCommand(program) {
169
192
  ],
170
193
  [join(".context", "progress.md"), progressMd(projectName)],
171
194
  ];
172
- for (const [filePath, content] of files) {
195
+ const minimalPaths = new Set([
196
+ "TOCKET.md",
197
+ join(".context", "activeContext.md"),
198
+ join(".context", "systemPatterns.md"),
199
+ ]);
200
+ const filesToWrite = minimal
201
+ ? files.filter(([path]) => minimalPaths.has(path))
202
+ : files;
203
+ for (const [filePath, content] of filesToWrite) {
173
204
  const fullPath = join(cwd, filePath);
174
205
  const exists = await fileExists(fullPath);
175
206
  if (exists && !force) {
@@ -185,8 +216,13 @@ export function registerInitCommand(program) {
185
216
  await writeFile(fullPath, content, "utf-8");
186
217
  console.log(" " + success(`${exists ? "updated" : "created"} ${filePath}`));
187
218
  }
219
+ const gitignoreWarning = checkGitignoreConflict(cwd);
220
+ if (gitignoreWarning) {
221
+ console.log("\n " + warn(gitignoreWarning));
222
+ }
188
223
  console.log("\n" + success(`Workspace initialized for ${projectName}!`) +
189
224
  (hasDetection ? dim(" Stack pre-populated from package.json.") : "") +
190
225
  "\n" + dim(" Next: run tocket generate to create your first payload.\n"));
191
226
  });
192
227
  }
228
+ //# sourceMappingURL=init.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.cmd.js","sourceRoot":"","sources":["../../src/commands/init.cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Command } from "commander";
2
+ export interface LintResult {
3
+ severity: "pass" | "warn" | "info" | "fail";
4
+ message: string;
5
+ file?: string;
6
+ suggestion?: string;
7
+ }
8
+ export declare function lintActiveContext(content: string): LintResult[];
9
+ export declare function lintSystemPatterns(content: string): LintResult[];
10
+ export declare function lintProtocolSpec(content: string): LintResult[];
11
+ export declare function lintAgentConfig(name: string, content: string): LintResult[];
12
+ export declare function registerLintCommand(program: Command): void;
@@ -0,0 +1,270 @@
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { execSync } from "node:child_process";
4
+ import { success as themePass, warn as themeWarn, error as themeFail, heading, dim, info as themeInfo } from "../utils/theme.js";
5
+ import { isGitRepo } from "../utils/git.js";
6
+ export function lintActiveContext(content) {
7
+ const results = [];
8
+ // Check required sections exist
9
+ const requiredSections = ["## Current Focus", "## Recent Changes", "## Open Decisions"];
10
+ for (const section of requiredSections) {
11
+ if (content.includes(section)) {
12
+ results.push({ severity: "pass", message: `Has ${section} section` });
13
+ }
14
+ else {
15
+ results.push({
16
+ severity: "fail",
17
+ message: `Missing ${section} section`,
18
+ suggestion: `Add a "${section}" heading to activeContext.md`,
19
+ });
20
+ }
21
+ }
22
+ // Check Current Focus is populated
23
+ const focusMatch = content.match(/## Current Focus\s*\n+([\s\S]*?)(?=\n##|\n*$)/);
24
+ const focusBody = focusMatch?.[1]?.trim() ?? "";
25
+ if (!focusBody || focusBody.startsWith("_") || focusBody.includes("No active tasks")) {
26
+ results.push({
27
+ severity: "warn",
28
+ message: "Current Focus is empty or placeholder",
29
+ suggestion: "Run tocket focus \"your current task\" to set it",
30
+ });
31
+ }
32
+ else {
33
+ results.push({ severity: "pass", message: "Current Focus is populated" });
34
+ }
35
+ // Check Open Decisions section
36
+ const decisionsMatch = content.match(/## Open Decisions\s*\n+([\s\S]*?)(?=\n##|\n*$)/);
37
+ const decisionsBody = decisionsMatch?.[1]?.trim() ?? "";
38
+ if (!decisionsBody || decisionsBody.startsWith("_")) {
39
+ results.push({
40
+ severity: "info",
41
+ message: "Open Decisions section is empty",
42
+ suggestion: "List any unresolved decisions or write \"None\" if all resolved",
43
+ });
44
+ }
45
+ return results;
46
+ }
47
+ export function lintSystemPatterns(content) {
48
+ const results = [];
49
+ const hasConvention = content.includes("- ") || content.includes("| ");
50
+ if (hasConvention) {
51
+ results.push({ severity: "pass", message: "Has documented conventions" });
52
+ }
53
+ else {
54
+ results.push({
55
+ severity: "warn",
56
+ message: "No conventions documented",
57
+ suggestion: "Add bullet points or a table with your project's coding conventions",
58
+ });
59
+ }
60
+ // Check for key decisions table
61
+ if (content.includes("Key Decisions") || content.includes("key decisions")) {
62
+ const hasDecisionRows = content.match(/\|[^|]+\|[^|]+\|[^|]+\|/g);
63
+ const hasDataRows = hasDecisionRows && hasDecisionRows.length > 2; // header + separator + at least 1 row
64
+ if (hasDataRows) {
65
+ results.push({ severity: "pass", message: "Has key decisions recorded" });
66
+ }
67
+ else {
68
+ results.push({
69
+ severity: "info",
70
+ message: "Key Decisions table is empty",
71
+ suggestion: "Record architectural decisions with rationale and date",
72
+ });
73
+ }
74
+ }
75
+ return results;
76
+ }
77
+ export function lintProtocolSpec(content) {
78
+ const results = [];
79
+ if (content.includes("payload") || content.includes("Payload")) {
80
+ results.push({ severity: "pass", message: "References payload format" });
81
+ }
82
+ else {
83
+ results.push({
84
+ severity: "warn",
85
+ message: "Does not reference payload format",
86
+ suggestion: "TOCKET.md should describe the payload XML handoff format",
87
+ });
88
+ }
89
+ if (content.includes("Memory Bank") || content.includes(".context/")) {
90
+ results.push({ severity: "pass", message: "References Memory Bank" });
91
+ }
92
+ else {
93
+ results.push({
94
+ severity: "warn",
95
+ message: "Does not reference Memory Bank",
96
+ suggestion: "TOCKET.md should describe the .context/ directory",
97
+ });
98
+ }
99
+ return results;
100
+ }
101
+ export function lintAgentConfig(name, content) {
102
+ const results = [];
103
+ if (content.includes(".context/") || content.includes(".context\\")) {
104
+ results.push({ severity: "pass", message: `References .context/` });
105
+ }
106
+ else {
107
+ results.push({
108
+ severity: "warn",
109
+ message: `Does not reference .context/`,
110
+ suggestion: `Add instructions to read .context/ before acting`,
111
+ });
112
+ }
113
+ return results;
114
+ }
115
+ function severityIcon(severity) {
116
+ switch (severity) {
117
+ case "pass": return themePass("");
118
+ case "warn": return themeWarn("");
119
+ case "info": return themeInfo("");
120
+ case "fail": return themeFail("");
121
+ }
122
+ }
123
+ export function registerLintCommand(program) {
124
+ program
125
+ .command("lint")
126
+ .description("Audit .context/ content quality and suggest improvements")
127
+ .action(() => {
128
+ const cwd = process.cwd();
129
+ let passCount = 0;
130
+ let warnCount = 0;
131
+ let infoCount = 0;
132
+ let failCount = 0;
133
+ console.log(heading("\nTocket Lint\n"));
134
+ // Check TOCKET.md exists
135
+ const tocketPath = join(cwd, "TOCKET.md");
136
+ if (!existsSync(tocketPath)) {
137
+ console.log(themeFail(" TOCKET.md not found. Run tocket init first."));
138
+ process.exitCode = 1;
139
+ return;
140
+ }
141
+ // Lint activeContext.md
142
+ const acPath = join(cwd, ".context", "activeContext.md");
143
+ if (existsSync(acPath)) {
144
+ console.log(dim(" .context/activeContext.md"));
145
+ const content = readFileSync(acPath, "utf-8");
146
+ const results = lintActiveContext(content);
147
+ for (const r of results) {
148
+ printResult(r);
149
+ countResult(r.severity);
150
+ }
151
+ // Staleness check
152
+ const stats = statSync(acPath);
153
+ const daysSince = Math.floor((Date.now() - stats.mtimeMs) / (1000 * 60 * 60 * 24));
154
+ if (daysSince > 7) {
155
+ const r = {
156
+ severity: "warn",
157
+ message: `Last modified ${daysSince} days ago`,
158
+ suggestion: "Update activeContext.md with current state",
159
+ };
160
+ printResult(r);
161
+ countResult(r.severity);
162
+ }
163
+ console.log();
164
+ }
165
+ else {
166
+ console.log(dim(" .context/activeContext.md"));
167
+ console.log(` ${severityIcon("fail")} File missing (required)`);
168
+ failCount++;
169
+ console.log();
170
+ }
171
+ // Lint systemPatterns.md
172
+ const spPath = join(cwd, ".context", "systemPatterns.md");
173
+ if (existsSync(spPath)) {
174
+ console.log(dim(" .context/systemPatterns.md"));
175
+ const content = readFileSync(spPath, "utf-8");
176
+ const results = lintSystemPatterns(content);
177
+ for (const r of results) {
178
+ printResult(r);
179
+ countResult(r.severity);
180
+ }
181
+ console.log();
182
+ }
183
+ // Lint TOCKET.md
184
+ console.log(dim(" TOCKET.md"));
185
+ const tocketContent = readFileSync(tocketPath, "utf-8");
186
+ const tocketResults = lintProtocolSpec(tocketContent);
187
+ for (const r of tocketResults) {
188
+ printResult(r);
189
+ countResult(r.severity);
190
+ }
191
+ console.log();
192
+ // Lint agent configs
193
+ const agentFiles = ["CLAUDE.md", "GEMINI.md"];
194
+ for (const af of agentFiles) {
195
+ const afPath = join(cwd, af);
196
+ if (existsSync(afPath)) {
197
+ console.log(dim(` ${af}`));
198
+ const content = readFileSync(afPath, "utf-8");
199
+ const results = lintAgentConfig(af, content);
200
+ for (const r of results) {
201
+ printResult(r);
202
+ countResult(r.severity);
203
+ }
204
+ console.log();
205
+ }
206
+ }
207
+ // Uncommitted context check
208
+ if (isGitRepo(cwd)) {
209
+ try {
210
+ const output = execSync("git status --porcelain .context/", {
211
+ cwd,
212
+ encoding: "utf-8",
213
+ }).trim();
214
+ if (output) {
215
+ const count = output.split("\n").length;
216
+ console.log(dim(" git"));
217
+ const r = {
218
+ severity: "info",
219
+ message: `${count} uncommitted change(s) in .context/`,
220
+ suggestion: "Commit .context/ changes to preserve shared memory",
221
+ };
222
+ printResult(r);
223
+ countResult(r.severity);
224
+ console.log();
225
+ }
226
+ }
227
+ catch {
228
+ // git error — skip
229
+ }
230
+ }
231
+ // Summary
232
+ const total = passCount + warnCount + infoCount + failCount;
233
+ console.log(dim(` ${passCount} passed, ${warnCount} warnings, ${infoCount} info, ${failCount} failures (${total} checks)`));
234
+ console.log();
235
+ if (failCount > 0) {
236
+ console.log(themeFail("Context has issues that need attention."));
237
+ process.exitCode = 1;
238
+ }
239
+ else if (warnCount > 0) {
240
+ console.log(themeWarn("Context is functional but could be improved."));
241
+ }
242
+ else {
243
+ console.log(themePass("Context is in great shape."));
244
+ }
245
+ function printResult(r) {
246
+ const icon = severityIcon(r.severity);
247
+ console.log(` ${icon} ${r.message}`);
248
+ if (r.suggestion) {
249
+ console.log(` ${dim(r.suggestion)}`);
250
+ }
251
+ }
252
+ function countResult(severity) {
253
+ switch (severity) {
254
+ case "pass":
255
+ passCount++;
256
+ break;
257
+ case "warn":
258
+ warnCount++;
259
+ break;
260
+ case "info":
261
+ infoCount++;
262
+ break;
263
+ case "fail":
264
+ failCount++;
265
+ break;
266
+ }
267
+ }
268
+ });
269
+ }
270
+ //# sourceMappingURL=lint.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.cmd.js","sourceRoot":"","sources":["../../src/commands/lint.cmd.ts"],"names":[],"mappings":"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"}
@@ -83,3 +83,4 @@ export function registerStatusCommand(program) {
83
83
  console.log();
84
84
  });
85
85
  }
86
+ //# sourceMappingURL=status.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.cmd.js","sourceRoot":"","sources":["../../src/commands/status.cmd.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,8 @@ export function registerSyncCommand(program) {
9
9
  program
10
10
  .command("sync")
11
11
  .description("Update Memory Bank from git history and session artifacts")
12
- .action(async () => {
12
+ .option("--summary <text>", "Session summary (skip prompt)")
13
+ .action(async (options) => {
13
14
  const progressPath = join(process.cwd(), ".context", "progress.md");
14
15
  const contextDir = join(process.cwd(), ".context");
15
16
  if (!existsSync(contextDir)) {
@@ -18,7 +19,7 @@ export function registerSyncCommand(program) {
18
19
  return;
19
20
  }
20
21
  const config = await getConfig();
21
- const summary = await input({
22
+ const summary = options.summary ?? await input({
22
23
  message: "What did you accomplish in this session?",
23
24
  });
24
25
  const commits = getRecentCommitsRaw();
@@ -45,3 +46,4 @@ ${commits}
45
46
  console.log("\n" + success("Memory Bank synchronized!"));
46
47
  });
47
48
  }
49
+ //# sourceMappingURL=sync.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.cmd.js","sourceRoot":"","sources":["../../src/commands/sync.cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAEjC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,KAAK,CAAC;YAC7C,OAAO,EAAE,0CAA0C;SACpD,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,eAAe,IAAI,GAAG,SAAS;;eAEpC,OAAO;;;;EAIpB,OAAO;;;;;CAKR,CAAC;QAEI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,MAAM,SAAS,CACb,YAAY,EACZ,yDAAyD,KAAK,EAAE,EAChE,OAAO,CACR,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,2 +1,9 @@
1
1
  import type { Command } from "commander";
2
+ export interface CheckResult {
3
+ icon: string;
4
+ message: string;
5
+ }
6
+ export declare function checkFile(basePath: string, relativePath: string, required: boolean): CheckResult;
7
+ export declare function checkStale(basePath: string, relativePath: string): CheckResult | null;
8
+ export declare function checkAgentFile(basePath: string): CheckResult;
2
9
  export declare function registerValidateCommand(program: Command): void;
@@ -4,7 +4,7 @@ import { success as themePass, warn as themeWarn, error as themeFail, heading }
4
4
  const PASS = themePass("");
5
5
  const WARN = themeWarn("");
6
6
  const FAIL = themeFail("");
7
- function checkFile(basePath, relativePath, required) {
7
+ export function checkFile(basePath, relativePath, required) {
8
8
  const fullPath = join(basePath, relativePath);
9
9
  if (existsSync(fullPath)) {
10
10
  return { icon: PASS, message: `${relativePath} found` };
@@ -14,7 +14,7 @@ function checkFile(basePath, relativePath, required) {
14
14
  }
15
15
  return { icon: WARN, message: `${relativePath} missing (optional)` };
16
16
  }
17
- function checkStale(basePath, relativePath) {
17
+ export function checkStale(basePath, relativePath) {
18
18
  const fullPath = join(basePath, relativePath);
19
19
  if (!existsSync(fullPath))
20
20
  return null;
@@ -28,7 +28,7 @@ function checkStale(basePath, relativePath) {
28
28
  }
29
29
  return null;
30
30
  }
31
- function checkAgentFile(basePath) {
31
+ export function checkAgentFile(basePath) {
32
32
  const agentFiles = [
33
33
  "CLAUDE.md",
34
34
  "GEMINI.md",
@@ -89,3 +89,4 @@ export function registerValidateCommand(program) {
89
89
  }
90
90
  });
91
91
  }
92
+ //# sourceMappingURL=validate.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.cmd.js","sourceRoot":"","sources":["../../src/commands/validate.cmd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,KAAK,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEzG,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAO3B,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,YAAoB,EACpB,QAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,qBAAqB,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,qBAAqB,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,YAAoB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAClC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CACrD,CAAC;IAEF,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,GAAG,YAAY,kBAAkB,iBAAiB,0BAA0B;SACtF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,UAAU,GAAG;QACjB,WAAW;QACX,WAAW;QACX,aAAa;QACb,cAAc;QACd,cAAc;KACf,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,uBAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACnD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,yDAAyD;KACnE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAE3D,iBAAiB;QACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAC3D,CAAC;QACF,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAC5D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QAEhD,iBAAiB;QACjB,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,CAC1D,CAAC;QACF,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,KAAK,CAAC,CAC7D,CAAC;QACF,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,CACvD,CAAC;QAEF,eAAe;QACf,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAElC,kBAAkB;QAClB,MAAM,UAAU,GAAG,UAAU,CAC3B,GAAG,EACH,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CACrC,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QAED,gBAAgB;QAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;gBAAE,UAAU,GAAG,IAAI,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,6CAA6C,CAAC,CAAC;YAChG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/index.js CHANGED
@@ -10,6 +10,8 @@ import { registerConfigCommand } from "./commands/config.cmd.js";
10
10
  import { registerEjectCommand } from "./commands/eject.cmd.js";
11
11
  import { registerFocusCommand } from "./commands/focus.cmd.js";
12
12
  import { registerStatusCommand } from "./commands/status.cmd.js";
13
+ import { registerDoctorCommand } from "./commands/doctor.cmd.js";
14
+ import { registerLintCommand } from "./commands/lint.cmd.js";
13
15
  const pkg = JSON.parse(readFileSync(join(import.meta.dirname, "..", "package.json"), "utf-8"));
14
16
  const program = new Command();
15
17
  program
@@ -24,6 +26,8 @@ registerConfigCommand(program);
24
26
  registerEjectCommand(program);
25
27
  registerFocusCommand(program);
26
28
  registerStatusCommand(program);
29
+ registerDoctorCommand(program);
30
+ registerLintCommand(program);
27
31
  // No-args: show interactive dashboard (TTY) or help (non-TTY)
28
32
  const args = process.argv.slice(2);
29
33
  if (args.length === 0 && process.stdin.isTTY) {
@@ -33,3 +37,4 @@ if (args.length === 0 && process.stdin.isTTY) {
33
37
  else {
34
38
  program.parse();
35
39
  }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAChD,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,8DAA8D,CAAC;KAC3E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE7B,8DAA8D;AAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAClE,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
@@ -345,3 +345,4 @@ A payload is the structured handoff from Architect to Executor.
345
345
  3. Read your role-specific config (\`CLAUDE.md\` or \`GEMINI.md\`)
346
346
  4. Proceed with your task, following the Memory Bank rules above
347
347
  `;
348
+ //# sourceMappingURL=memory-bank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-bank.js","sourceRoot":"","sources":["../../src/templates/memory-bank.ts"],"names":[],"mappings":"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"}