@pedrocivita/tocket 2.4.0 → 2.6.3

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 (120) hide show
  1. package/README.md +229 -18
  2. package/dist/commands/agents-md.cmd.d.ts +2 -0
  3. package/dist/commands/agents-md.cmd.js +166 -0
  4. package/dist/commands/agents-md.cmd.js.map +1 -0
  5. package/dist/commands/dashboard.js +2 -0
  6. package/dist/commands/dashboard.js.map +1 -1
  7. package/dist/commands/decide.cmd.d.ts +2 -0
  8. package/dist/commands/decide.cmd.js +70 -0
  9. package/dist/commands/decide.cmd.js.map +1 -0
  10. package/dist/commands/diff.cmd.d.ts +15 -0
  11. package/dist/commands/diff.cmd.js +106 -0
  12. package/dist/commands/diff.cmd.js.map +1 -0
  13. package/dist/commands/doctor.cmd.d.ts +13 -0
  14. package/dist/commands/doctor.cmd.js +159 -11
  15. package/dist/commands/doctor.cmd.js.map +1 -1
  16. package/dist/commands/eject.cmd.d.ts +1 -1
  17. package/dist/commands/eject.cmd.js +3 -1
  18. package/dist/commands/eject.cmd.js.map +1 -1
  19. package/dist/commands/generate.cmd.js +7 -1
  20. package/dist/commands/generate.cmd.js.map +1 -1
  21. package/dist/commands/handoff.cmd.d.ts +14 -0
  22. package/dist/commands/handoff.cmd.js +131 -0
  23. package/dist/commands/handoff.cmd.js.map +1 -0
  24. package/dist/commands/init.cmd.js +64 -11
  25. package/dist/commands/init.cmd.js.map +1 -1
  26. package/dist/commands/scaffold.cmd.d.ts +2 -0
  27. package/dist/commands/scaffold.cmd.js +118 -0
  28. package/dist/commands/scaffold.cmd.js.map +1 -0
  29. package/dist/commands/suite.cmd.d.ts +2 -0
  30. package/dist/commands/suite.cmd.js +386 -0
  31. package/dist/commands/suite.cmd.js.map +1 -0
  32. package/dist/commands/validate.cmd.js +1 -0
  33. package/dist/commands/validate.cmd.js.map +1 -1
  34. package/dist/commands/work.cmd.d.ts +2 -0
  35. package/dist/commands/work.cmd.js +48 -0
  36. package/dist/commands/work.cmd.js.map +1 -0
  37. package/dist/eval/decide-eval.d.ts +28 -0
  38. package/dist/eval/decide-eval.js +34 -0
  39. package/dist/eval/decide-eval.js.map +1 -0
  40. package/dist/eval/triage-eval.d.ts +46 -0
  41. package/dist/eval/triage-eval.js +174 -0
  42. package/dist/eval/triage-eval.js.map +1 -0
  43. package/dist/index.js +15 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/mcp/index.d.ts +2 -0
  46. package/dist/mcp/index.js +7 -0
  47. package/dist/mcp/index.js.map +1 -0
  48. package/dist/mcp/server.d.ts +4 -0
  49. package/dist/mcp/server.js +360 -0
  50. package/dist/mcp/server.js.map +1 -0
  51. package/dist/templates/memory-bank.d.ts +11 -0
  52. package/dist/templates/memory-bank.js +456 -329
  53. package/dist/templates/memory-bank.js.map +1 -1
  54. package/dist/tests/agents.test.js +59 -1
  55. package/dist/tests/agents.test.js.map +1 -1
  56. package/dist/tests/decide.test.d.ts +1 -0
  57. package/dist/tests/decide.test.js +483 -0
  58. package/dist/tests/decide.test.js.map +1 -0
  59. package/dist/tests/diff.test.d.ts +1 -0
  60. package/dist/tests/diff.test.js +119 -0
  61. package/dist/tests/diff.test.js.map +1 -0
  62. package/dist/tests/doctor.test.js +73 -1
  63. package/dist/tests/doctor.test.js.map +1 -1
  64. package/dist/tests/eject.test.js +3 -0
  65. package/dist/tests/eject.test.js.map +1 -1
  66. package/dist/tests/git.test.js +32 -1
  67. package/dist/tests/git.test.js.map +1 -1
  68. package/dist/tests/handoff.test.d.ts +1 -0
  69. package/dist/tests/handoff.test.js +97 -0
  70. package/dist/tests/handoff.test.js.map +1 -0
  71. package/dist/tests/helpers.d.ts +4 -0
  72. package/dist/tests/helpers.js +9 -0
  73. package/dist/tests/helpers.js.map +1 -0
  74. package/dist/tests/helpers.test.d.ts +1 -0
  75. package/dist/tests/helpers.test.js +16 -0
  76. package/dist/tests/helpers.test.js.map +1 -0
  77. package/dist/tests/init.test.js +53 -2
  78. package/dist/tests/init.test.js.map +1 -1
  79. package/dist/tests/loop.test.d.ts +1 -0
  80. package/dist/tests/loop.test.js +153 -0
  81. package/dist/tests/loop.test.js.map +1 -0
  82. package/dist/tests/memory-bank.test.js +53 -1
  83. package/dist/tests/memory-bank.test.js.map +1 -1
  84. package/dist/tests/suite.test.d.ts +1 -0
  85. package/dist/tests/suite.test.js +199 -0
  86. package/dist/tests/suite.test.js.map +1 -0
  87. package/dist/tests/triage.test.d.ts +1 -0
  88. package/dist/tests/triage.test.js +152 -0
  89. package/dist/tests/triage.test.js.map +1 -0
  90. package/dist/tests/work.test.d.ts +1 -0
  91. package/dist/tests/work.test.js +276 -0
  92. package/dist/tests/work.test.js.map +1 -0
  93. package/dist/tests/xml.test.d.ts +1 -0
  94. package/dist/tests/xml.test.js +139 -0
  95. package/dist/tests/xml.test.js.map +1 -0
  96. package/dist/utils/agents.d.ts +23 -0
  97. package/dist/utils/agents.js +82 -0
  98. package/dist/utils/agents.js.map +1 -1
  99. package/dist/utils/appmaps.d.ts +65 -0
  100. package/dist/utils/appmaps.js +280 -0
  101. package/dist/utils/appmaps.js.map +1 -0
  102. package/dist/utils/decide.d.ts +178 -0
  103. package/dist/utils/decide.js +623 -0
  104. package/dist/utils/decide.js.map +1 -0
  105. package/dist/utils/git.d.ts +2 -0
  106. package/dist/utils/git.js +35 -1
  107. package/dist/utils/git.js.map +1 -1
  108. package/dist/utils/jev.d.ts +83 -0
  109. package/dist/utils/jev.js +190 -0
  110. package/dist/utils/jev.js.map +1 -0
  111. package/dist/utils/triage.d.ts +87 -0
  112. package/dist/utils/triage.js +241 -0
  113. package/dist/utils/triage.js.map +1 -0
  114. package/dist/utils/work.d.ts +72 -0
  115. package/dist/utils/work.js +225 -0
  116. package/dist/utils/work.js.map +1 -0
  117. package/dist/utils/xml.d.ts +22 -0
  118. package/dist/utils/xml.js +54 -0
  119. package/dist/utils/xml.js.map +1 -0
  120. package/package.json +53 -50
@@ -0,0 +1,106 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { heading, success, warn, error as themeError, dim, } from "../utils/theme.js";
4
+ import { parsePayloadXml } from "../utils/xml.js";
5
+ import { getDiffFiles, isGitRepo } from "../utils/git.js";
6
+ export function buildDiffReport(payload, actualFiles) {
7
+ const expectedFiles = payload.tasks
8
+ .map((t) => t.target)
9
+ .filter((t) => t.length > 0);
10
+ const actualSet = new Set(actualFiles);
11
+ const expectedSet = new Set(expectedFiles);
12
+ const matchedFiles = expectedFiles.filter((f) => actualSet.has(f));
13
+ const missingFiles = expectedFiles.filter((f) => !actualSet.has(f));
14
+ const extraFiles = actualFiles.filter((f) => !expectedSet.has(f));
15
+ const doneCriteria = payload.tasks
16
+ .map((t) => t.done)
17
+ .filter((d) => d.length > 0);
18
+ return {
19
+ payload,
20
+ expectedFiles,
21
+ actualFiles,
22
+ matchedFiles,
23
+ missingFiles,
24
+ extraFiles,
25
+ doneCriteria,
26
+ checks: payload.checks,
27
+ };
28
+ }
29
+ export function formatDiffReport(report) {
30
+ const lines = [];
31
+ lines.push(heading("\n Tocket Diff Report\n"));
32
+ lines.push(dim(` Payload v${report.payload.version} — "${report.payload.meta.intent}"`));
33
+ lines.push("");
34
+ // File coverage
35
+ lines.push(heading(" File Coverage"));
36
+ for (const f of report.matchedFiles) {
37
+ lines.push(` ${success(f)}`);
38
+ }
39
+ for (const f of report.missingFiles) {
40
+ lines.push(` ${themeError(f)} ${dim("(expected but not changed)")}`);
41
+ }
42
+ for (const f of report.extraFiles) {
43
+ lines.push(` ${warn(f)} ${dim("(changed but not in payload)")}`);
44
+ }
45
+ if (report.expectedFiles.length === 0) {
46
+ lines.push(dim(" No specific file targets in payload"));
47
+ }
48
+ lines.push("");
49
+ // Summary line
50
+ const total = report.expectedFiles.length;
51
+ const matched = report.matchedFiles.length;
52
+ lines.push(dim(` ${matched}/${total} expected files changed, ${report.extraFiles.length} extra file(s)`));
53
+ lines.push("");
54
+ // Done criteria checklist
55
+ if (report.doneCriteria.length > 0) {
56
+ lines.push(heading(" Done Criteria"));
57
+ for (const d of report.doneCriteria) {
58
+ lines.push(` [ ] ${d}`);
59
+ }
60
+ lines.push("");
61
+ }
62
+ // Validate checks
63
+ if (report.checks.length > 0) {
64
+ lines.push(heading(" Validation Checks"));
65
+ for (const c of report.checks) {
66
+ lines.push(` [ ] ${c}`);
67
+ }
68
+ lines.push("");
69
+ }
70
+ return lines.join("\n");
71
+ }
72
+ export function registerDiffCommand(program) {
73
+ program
74
+ .command("diff")
75
+ .description("Compare payload targets against actual git changes")
76
+ .argument("[payload-path]", "Path to payload XML", ".tocket/last-payload.xml")
77
+ .option("--json", "Output as JSON instead of formatted terminal")
78
+ .option("--since <ref>", "Git ref to diff against (default: HEAD)")
79
+ .action((payloadPath, options) => {
80
+ const cwd = process.cwd();
81
+ const fullPayloadPath = join(cwd, payloadPath);
82
+ if (!existsSync(fullPayloadPath)) {
83
+ console.error(themeError(`Payload not found at ${payloadPath}.`) +
84
+ "\n" +
85
+ dim(" Run 'tocket generate' first, or provide a path: tocket diff <path>"));
86
+ process.exitCode = 1;
87
+ return;
88
+ }
89
+ if (!isGitRepo(cwd)) {
90
+ console.error(themeError("Not a git repository. tocket diff requires git."));
91
+ process.exitCode = 1;
92
+ return;
93
+ }
94
+ const xml = readFileSync(fullPayloadPath, "utf-8");
95
+ const payload = parsePayloadXml(xml);
96
+ const actualFiles = getDiffFiles(options.since, cwd);
97
+ const report = buildDiffReport(payload, actualFiles);
98
+ if (options.json) {
99
+ console.log(JSON.stringify(report, null, 2));
100
+ }
101
+ else {
102
+ console.log(formatDiffReport(report));
103
+ }
104
+ });
105
+ }
106
+ //# sourceMappingURL=diff.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.cmd.js","sourceRoot":"","sources":["../../src/commands/diff.cmd.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,18 @@ export interface DiagResult {
5
5
  }
6
6
  export declare function checkContentHealth(basePath: string): DiagResult[];
7
7
  export declare function checkGitTracking(cwd: string): DiagResult[];
8
+ export declare function formatAge(mtimeMs: number, now?: number): string;
9
+ export declare function findLatestDecision(cwd: string): {
10
+ path: string;
11
+ rel: string;
12
+ mtimeMs: number;
13
+ } | null;
14
+ export declare function checkTypesafeKeyPresent(env?: NodeJS.ProcessEnv): DiagResult;
15
+ export declare function checkNpmBin(): DiagResult;
16
+ /** Light notebook checks. Missing `.context/` is the only hard fail. */
17
+ export declare function checkNotebookLight(cwd: string, env?: NodeJS.ProcessEnv): {
18
+ results: DiagResult[];
19
+ hardFail: boolean;
20
+ };
8
21
  export declare function checkStaleness(basePath: string): DiagResult | null;
9
22
  export declare function registerDoctorCommand(program: Command): void;
@@ -1,9 +1,13 @@
1
- import { existsSync, readFileSync, statSync } from "node:fs";
2
- import { join } from "node:path";
1
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
2
+ import { join, relative } from "node:path";
3
3
  import { execSync } from "node:child_process";
4
4
  import { success as themePass, warn as themeWarn, error as themeFail, heading, dim } from "../utils/theme.js";
5
5
  import { isGitRepo, isContextIgnored } from "../utils/git.js";
6
6
  import { STALENESS_THRESHOLD_DAYS } from "../utils/context.js";
7
+ import { APPMAPS_DIR } from "../utils/appmaps.js";
8
+ import { DECISIONS_DIR } from "../utils/decide.js";
9
+ import { readTypesafeApiKey } from "../utils/jev.js";
10
+ import { TOCKET_SKILL_REL, TOCKET_SKILLS_ADD, tocketConventionsHint, } from "../templates/memory-bank.js";
7
11
  const PASS = themePass("");
8
12
  const WARN = themeWarn("");
9
13
  const FAIL = themeFail("");
@@ -93,6 +97,120 @@ export function checkGitTracking(cwd) {
93
97
  }
94
98
  return results;
95
99
  }
100
+ export function formatAge(mtimeMs, now = Date.now()) {
101
+ const seconds = Math.max(0, Math.floor((now - mtimeMs) / 1000));
102
+ if (seconds < 60)
103
+ return `${seconds}s ago`;
104
+ const minutes = Math.floor(seconds / 60);
105
+ if (minutes < 60)
106
+ return `${minutes}m ago`;
107
+ const hours = Math.floor(minutes / 60);
108
+ if (hours < 48)
109
+ return `${hours}h ago`;
110
+ return `${Math.floor(hours / 24)}d ago`;
111
+ }
112
+ function walkJsonFiles(dir, acc = []) {
113
+ if (!existsSync(dir))
114
+ return acc;
115
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
116
+ const full = join(dir, entry.name);
117
+ if (entry.isDirectory()) {
118
+ walkJsonFiles(full, acc);
119
+ }
120
+ else if (entry.isFile() &&
121
+ entry.name.endsWith(".json") &&
122
+ !entry.name.endsWith(".applied.json")) {
123
+ acc.push(full);
124
+ }
125
+ }
126
+ return acc;
127
+ }
128
+ export function findLatestDecision(cwd) {
129
+ const files = walkJsonFiles(join(cwd, DECISIONS_DIR));
130
+ if (files.length === 0)
131
+ return null;
132
+ let latest = files[0];
133
+ let mtimeMs = statSync(latest).mtimeMs;
134
+ for (const file of files.slice(1)) {
135
+ const next = statSync(file).mtimeMs;
136
+ if (next > mtimeMs) {
137
+ latest = file;
138
+ mtimeMs = next;
139
+ }
140
+ }
141
+ return { path: latest, rel: relative(cwd, latest), mtimeMs };
142
+ }
143
+ export function checkTypesafeKeyPresent(env = process.env) {
144
+ if (readTypesafeApiKey(env)) {
145
+ return { icon: PASS, message: "TYPESAFE_API_KEY: yes" };
146
+ }
147
+ return { icon: WARN, message: "TYPESAFE_API_KEY: no (decide uses stub)" };
148
+ }
149
+ export function checkNpmBin() {
150
+ try {
151
+ execSync("npm --version", { stdio: ["ignore", "pipe", "ignore"] });
152
+ return { icon: PASS, message: "npm/bin ok" };
153
+ }
154
+ catch {
155
+ return { icon: WARN, message: "npm not found on PATH" };
156
+ }
157
+ }
158
+ /** Light notebook checks. Missing `.context/` is the only hard fail. */
159
+ export function checkNotebookLight(cwd, env = process.env) {
160
+ const results = [];
161
+ const contextDir = join(cwd, ".context");
162
+ if (!existsSync(contextDir)) {
163
+ results.push({ icon: FAIL, message: ".context/ missing. Run tocket init" });
164
+ results.push(checkTypesafeKeyPresent(env));
165
+ results.push(checkNpmBin());
166
+ return { results, hardFail: true };
167
+ }
168
+ results.push({ icon: PASS, message: ".context/ found" });
169
+ const decisionsDir = join(cwd, DECISIONS_DIR);
170
+ if (existsSync(decisionsDir)) {
171
+ results.push({ icon: PASS, message: `${DECISIONS_DIR}/ found` });
172
+ }
173
+ else {
174
+ results.push({ icon: WARN, message: `${DECISIONS_DIR}/ missing (run tocket decide)` });
175
+ }
176
+ const appmapsDir = join(cwd, APPMAPS_DIR);
177
+ if (existsSync(appmapsDir)) {
178
+ results.push({ icon: PASS, message: `${APPMAPS_DIR}/ found` });
179
+ }
180
+ else {
181
+ results.push({ icon: WARN, message: `${APPMAPS_DIR}/ missing (optional)` });
182
+ }
183
+ results.push(checkTypesafeKeyPresent(env));
184
+ const agentsMdPath = join(cwd, "AGENTS.md");
185
+ if (existsSync(agentsMdPath)) {
186
+ results.push({ icon: PASS, message: "AGENTS.md found" });
187
+ }
188
+ else {
189
+ results.push({ icon: WARN, message: "AGENTS.md missing (run tocket init, or tocket agents-md)" });
190
+ }
191
+ const skillPath = join(cwd, TOCKET_SKILL_REL);
192
+ if (existsSync(skillPath)) {
193
+ results.push({ icon: PASS, message: `${TOCKET_SKILL_REL} found` });
194
+ }
195
+ else {
196
+ results.push({
197
+ icon: WARN,
198
+ message: `${TOCKET_SKILL_REL} missing (${TOCKET_SKILLS_ADD})`,
199
+ });
200
+ }
201
+ const latest = findLatestDecision(cwd);
202
+ if (latest) {
203
+ results.push({
204
+ icon: PASS,
205
+ message: `last decision ${latest.rel} (${formatAge(latest.mtimeMs)})`,
206
+ });
207
+ }
208
+ else {
209
+ results.push({ icon: WARN, message: "no decision file yet (run tocket decide)" });
210
+ }
211
+ results.push(checkNpmBin());
212
+ return { results, hardFail: false };
213
+ }
96
214
  export function checkStaleness(basePath) {
97
215
  const acPath = join(basePath, ".context", "activeContext.md");
98
216
  if (!existsSync(acPath))
@@ -110,7 +228,7 @@ export function checkStaleness(basePath) {
110
228
  export function registerDoctorCommand(program) {
111
229
  program
112
230
  .command("doctor")
113
- .description("Deep diagnostic of a Tocket workspace")
231
+ .description("Light notebook checks plus workspace diagnostics")
114
232
  .action(() => {
115
233
  const cwd = process.cwd();
116
234
  const results = [];
@@ -118,13 +236,11 @@ export function registerDoctorCommand(program) {
118
236
  let warnCount = 0;
119
237
  let failCount = 0;
120
238
  console.log(heading("\nTocket Doctor\n"));
121
- // 1. File existence (same as validate)
239
+ const light = checkNotebookLight(cwd);
240
+ results.push(...light.results);
241
+ // Deep file list (skip duplicate .context/ row; light already reported it)
122
242
  const contextDir = join(cwd, ".context");
123
- if (!existsSync(contextDir)) {
124
- results.push({ icon: FAIL, message: ".context/ directory missing" });
125
- }
126
- else {
127
- results.push({ icon: PASS, message: ".context/ directory found" });
243
+ if (existsSync(contextDir)) {
128
244
  const requiredFiles = ["activeContext.md", "systemPatterns.md"];
129
245
  const optionalFiles = ["techContext.md", "productContext.md", "progress.md"];
130
246
  for (const f of requiredFiles) {
@@ -158,6 +274,30 @@ export function registerDoctorCommand(program) {
158
274
  results.push(stale);
159
275
  // 4. Git tracking
160
276
  results.push(...checkGitTracking(cwd));
277
+ // 5. Last payload check
278
+ const lastPayloadPath = join(cwd, ".tocket", "last-payload.xml");
279
+ if (existsSync(lastPayloadPath)) {
280
+ const payloadStats = statSync(lastPayloadPath);
281
+ const daysSince = Math.floor((Date.now() - payloadStats.mtimeMs) / (1000 * 60 * 60 * 24));
282
+ if (daysSince > STALENESS_THRESHOLD_DAYS) {
283
+ results.push({
284
+ icon: WARN,
285
+ message: `Last payload is ${daysSince} days old`,
286
+ });
287
+ }
288
+ else {
289
+ results.push({
290
+ icon: PASS,
291
+ message: "Last payload found (.tocket/last-payload.xml)",
292
+ });
293
+ }
294
+ }
295
+ else {
296
+ results.push({
297
+ icon: WARN,
298
+ message: "No last payload found — run tocket generate",
299
+ });
300
+ }
161
301
  // Print results
162
302
  for (const r of results) {
163
303
  console.log(` ${r.icon} ${r.message}`);
@@ -171,16 +311,24 @@ export function registerDoctorCommand(program) {
171
311
  console.log("");
172
312
  console.log(dim(` ${passCount} passed, ${warnCount} warnings, ${failCount} failures`));
173
313
  console.log("");
174
- if (failCount > 0) {
175
- console.log(themeFail("Workspace has issues.") + " Run tocket init to scaffold missing files.");
314
+ if (light.hardFail) {
315
+ console.log(themeFail("Not a Tocket project.") + " Run tocket init.");
176
316
  process.exitCode = 1;
177
317
  }
318
+ else if (failCount > 0) {
319
+ console.log(themeFail("Workspace has issues.") + " Run tocket init to scaffold missing files.");
320
+ }
178
321
  else if (warnCount > 0) {
179
322
  console.log(themeWarn("Workspace is functional but has warnings."));
180
323
  }
181
324
  else {
182
325
  console.log(themePass("Workspace is in great shape."));
183
326
  }
327
+ console.log("");
328
+ for (const line of tocketConventionsHint().split("\n")) {
329
+ console.log(dim(` ${line}`));
330
+ }
331
+ console.log("");
184
332
  });
185
333
  }
186
334
  //# sourceMappingURL=doctor.cmd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.cmd.js","sourceRoot":"","sources":["../../src/commands/doctor.cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.cmd.js","sourceRoot":"","sources":["../../src/commands/doctor.cmd.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Command } from "commander";
2
2
  /** Files created by `tocket init` that eject should remove. */
3
- export declare const EJECT_FILES: readonly ["TOCKET.md", "CLAUDE.md", "GEMINI.md", ".cursorrules"];
3
+ export declare const EJECT_FILES: readonly ["TOCKET.md", "AGENTS.md", "CLAUDE.md", "GEMINI.md", ".cursorrules", ".agents/skills/tocket/SKILL.md"];
4
4
  /** Directories created by `tocket init` that eject should remove. */
5
5
  export declare const EJECT_DIRS: readonly [".context"];
6
6
  export declare function registerEjectCommand(program: Command): void;
@@ -6,9 +6,11 @@ import { success, warn, info, dim } from "../utils/theme.js";
6
6
  /** Files created by `tocket init` that eject should remove. */
7
7
  export const EJECT_FILES = [
8
8
  "TOCKET.md",
9
+ "AGENTS.md",
9
10
  "CLAUDE.md",
10
11
  "GEMINI.md",
11
12
  ".cursorrules",
13
+ ".agents/skills/tocket/SKILL.md",
12
14
  ];
13
15
  /** Directories created by `tocket init` that eject should remove. */
14
16
  export const EJECT_DIRS = [".context"];
@@ -26,7 +28,7 @@ export function registerEjectCommand(program) {
26
28
  }
27
29
  if (!options.force) {
28
30
  const ok = await confirm({
29
- message: "This will permanently remove .context/, CLAUDE.md, GEMINI.md, TOCKET.md, and .cursorrules. Continue?",
31
+ message: "This will permanently remove .context/, AGENTS.md, CLAUDE.md, GEMINI.md, TOCKET.md, and .cursorrules. Continue?",
30
32
  default: false,
31
33
  });
32
34
  if (!ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"eject.cmd.js","sourceRoot":"","sources":["../../src/commands/eject.cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eject.cmd.js","sourceRoot":"","sources":["../../src/commands/eject.cmd.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { input, select, confirm } from "@inquirer/prompts";
2
- import { writeFileSync } from "node:fs";
2
+ import { mkdirSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
3
4
  import { success, heading, dim, banner } from "../utils/theme.js";
4
5
  import { getConfig } from "../utils/config.js";
5
6
  import { getStagedFiles, getModifiedFiles, getLastCommitMessage } from "../utils/git.js";
@@ -92,6 +93,11 @@ export function registerGenerateCommand(program) {
92
93
  });
93
94
  }
94
95
  const xml = buildPayloadXml(tasks);
96
+ // Persist payload for `tocket diff`
97
+ const tocketDir = join(process.cwd(), ".tocket");
98
+ mkdirSync(tocketDir, { recursive: true });
99
+ writeFileSync(join(tocketDir, "last-payload.xml"), xml, "utf-8");
100
+ console.log(dim(" Payload saved to .tocket/last-payload.xml"));
95
101
  // Preview
96
102
  if (options.preview !== false) {
97
103
  console.log(dim("\n--- Payload Preview ---"));
@@ -1 +1 @@
1
- {"version":3,"file":"generate.cmd.js","sourceRoot":"","sources":["../../src/commands/generate.cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.cmd.js","sourceRoot":"","sources":["../../src/commands/generate.cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Command } from "commander";
2
+ export interface HandoffData {
3
+ focus: string;
4
+ branch: string;
5
+ recentCommits: string[];
6
+ modifiedFiles: string[];
7
+ openDecisions: string;
8
+ projectName: string;
9
+ }
10
+ /** Extract the "## Open Decisions" section body from activeContext.md. */
11
+ export declare function extractOpenDecisions(content: string): string;
12
+ /** Build a condensed markdown summary for pasting into a new agent conversation. */
13
+ export declare function buildHandoffMarkdown(data: HandoffData): string;
14
+ export declare function registerHandoffCommand(program: Command): void;
@@ -0,0 +1,131 @@
1
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { success, error as themeError, dim } from "../utils/theme.js";
4
+ import { getRecentCommits, getCurrentBranch, getRecentlyModifiedFiles, isGitRepo, } from "../utils/git.js";
5
+ import { extractFocus } from "../utils/context.js";
6
+ /** Extract the "## Open Decisions" section body from activeContext.md. */
7
+ export function extractOpenDecisions(content) {
8
+ const match = content.match(/## Open Decisions\s*\n+([\s\S]*?)(?=\n## |\n*$)/);
9
+ const body = match?.[1]?.trim() ?? "";
10
+ if (!body || body.startsWith("_") || body.includes("No open decisions"))
11
+ return "";
12
+ return body;
13
+ }
14
+ /** Extract project name from the first heading of activeContext.md. */
15
+ function extractProjectName(content) {
16
+ const match = content.match(/^# (.+)/m);
17
+ if (!match?.[1])
18
+ return "Project";
19
+ return (match[1]
20
+ .replace("Active Context", "")
21
+ .replace(/\s*[-—]\s*/, "")
22
+ .trim() || "Project");
23
+ }
24
+ /** Parse a duration string like "2h", "30m", "1d" into minutes. */
25
+ function parseSinceDuration(since) {
26
+ const match = since.match(/^(\d+)(h|m|d)$/);
27
+ if (!match)
28
+ return 120;
29
+ const value = parseInt(match[1], 10);
30
+ switch (match[2]) {
31
+ case "h":
32
+ return value * 60;
33
+ case "m":
34
+ return value;
35
+ case "d":
36
+ return value * 60 * 24;
37
+ default:
38
+ return 120;
39
+ }
40
+ }
41
+ /** Build a condensed markdown summary for pasting into a new agent conversation. */
42
+ export function buildHandoffMarkdown(data) {
43
+ const lines = [];
44
+ lines.push(`## Session Handoff — ${data.projectName}`);
45
+ if (data.focus) {
46
+ lines.push(`**Focus:** ${data.focus}`);
47
+ }
48
+ if (data.branch) {
49
+ lines.push(`**Branch:** ${data.branch}`);
50
+ }
51
+ lines.push("");
52
+ if (data.recentCommits.length > 0) {
53
+ lines.push(`### Recent Changes (last ${data.recentCommits.length} commits)`);
54
+ for (const c of data.recentCommits) {
55
+ lines.push(`- ${c}`);
56
+ }
57
+ lines.push("");
58
+ }
59
+ if (data.modifiedFiles.length > 0) {
60
+ lines.push("### Modified Files (since last sync)");
61
+ for (const f of data.modifiedFiles) {
62
+ lines.push(`- ${f}`);
63
+ }
64
+ lines.push("");
65
+ }
66
+ if (data.openDecisions) {
67
+ lines.push("### Open Decisions");
68
+ lines.push(data.openDecisions);
69
+ lines.push("");
70
+ }
71
+ return lines.join("\n");
72
+ }
73
+ export function registerHandoffCommand(program) {
74
+ program
75
+ .command("handoff")
76
+ .description("Generate a clipboard-ready context summary for a new agent conversation")
77
+ .option("--to <target>", "Output target: clipboard (default), stdout, or file path")
78
+ .option("--commits <n>", "Number of recent commits to include", "5")
79
+ .option("--since <duration>", "Time window for modified files (e.g., 2h, 30m, 1d)", "2h")
80
+ .action(async (options) => {
81
+ const cwd = process.cwd();
82
+ const contextDir = join(cwd, ".context");
83
+ if (!existsSync(contextDir)) {
84
+ console.error(themeError("No .context/ directory found. Run 'tocket init' first."));
85
+ process.exitCode = 1;
86
+ return;
87
+ }
88
+ // Read activeContext.md
89
+ const activeContextPath = join(contextDir, "activeContext.md");
90
+ let focus = "";
91
+ let openDecisions = "";
92
+ let projectName = "Project";
93
+ if (existsSync(activeContextPath)) {
94
+ const content = readFileSync(activeContextPath, "utf-8");
95
+ focus = extractFocus(content);
96
+ openDecisions = extractOpenDecisions(content);
97
+ projectName = extractProjectName(content);
98
+ }
99
+ const commitCount = parseInt(options.commits ?? "5", 10);
100
+ const sinceMinutes = parseSinceDuration(options.since ?? "2h");
101
+ const branch = isGitRepo(cwd) ? getCurrentBranch(cwd) : "";
102
+ const recentCommits = getRecentCommits(commitCount, cwd);
103
+ const modifiedFiles = getRecentlyModifiedFiles(sinceMinutes, cwd);
104
+ const data = {
105
+ focus,
106
+ branch,
107
+ recentCommits,
108
+ modifiedFiles,
109
+ openDecisions,
110
+ projectName,
111
+ };
112
+ const markdown = buildHandoffMarkdown(data);
113
+ const target = options.to ?? "clipboard";
114
+ if (target === "stdout") {
115
+ console.log(markdown);
116
+ }
117
+ else if (target === "clipboard") {
118
+ const { default: clipboard } = await import("clipboardy");
119
+ clipboard.writeSync(markdown);
120
+ console.log("\n" +
121
+ success("Handoff summary copied to clipboard!") +
122
+ "\n" +
123
+ dim(" Paste it into your next agent conversation.\n"));
124
+ }
125
+ else {
126
+ writeFileSync(target, markdown, "utf-8");
127
+ console.log("\n" + success(`Handoff summary written to ${target}!`) + "\n");
128
+ }
129
+ });
130
+ }
131
+ //# sourceMappingURL=handoff.cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handoff.cmd.js","sourceRoot":"","sources":["../../src/commands/handoff.cmd.ts"],"names":[],"mappings":"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"}