claude-review-tool 0.1.0 → 0.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.
Files changed (91) hide show
  1. package/README.md +38 -8
  2. package/dist/args.js +7 -1
  3. package/dist/args.js.map +1 -1
  4. package/dist/capture-schema.js +1 -0
  5. package/dist/capture-schema.js.map +1 -1
  6. package/dist/cli.js +190 -26
  7. package/dist/cli.js.map +1 -1
  8. package/dist/doctor.js +263 -0
  9. package/dist/doctor.js.map +1 -0
  10. package/dist/http.js +1 -1
  11. package/dist/http.js.map +1 -1
  12. package/dist/init.js +530 -21
  13. package/dist/init.js.map +1 -1
  14. package/dist/intake-message.js +35 -9
  15. package/dist/intake-message.js.map +1 -1
  16. package/dist/intake.md +7 -7
  17. package/dist/integrations/loader.d.ts +32 -0
  18. package/dist/integrations/loader.js +334 -0
  19. package/dist/integrations/noop-loader.js +1 -0
  20. package/dist/integrations/noop-react.js +2 -0
  21. package/dist/integrations/react.d.ts +4 -0
  22. package/dist/integrations/react.js +340 -0
  23. package/dist/integrations/vite.d.ts +27 -0
  24. package/dist/integrations/vite.js +33 -0
  25. package/dist/integrations/vite.js.map +1 -0
  26. package/dist/loader.js +9 -0
  27. package/dist/mcp-stdio.js +212 -0
  28. package/dist/mcp-stdio.js.map +1 -0
  29. package/dist/overlay.js +200 -70
  30. package/dist/plugin-marketplace/.claude-plugin/marketplace.json +22 -0
  31. package/dist/plugin-marketplace/plugin/.claude-plugin/plugin.json +9 -0
  32. package/dist/plugin-marketplace/plugin/hooks/hooks.json +16 -0
  33. package/dist/plugin-marketplace/plugin/hooks/session-start.mjs +102 -0
  34. package/dist/plugin-marketplace/plugin/skills/done/SKILL.md +15 -0
  35. package/dist/plugin-marketplace/plugin/skills/init/SKILL.md +41 -0
  36. package/dist/plugin-marketplace/plugin/skills/intake/SKILL.md +35 -0
  37. package/dist/plugin-marketplace/plugin/skills/next/SKILL.md +72 -0
  38. package/dist/plugin-marketplace/plugin/skills/serve/SKILL.md +94 -0
  39. package/dist/plugin-marketplace/plugin/skills/task/SKILL.md +17 -0
  40. package/dist/plugin-marketplace/plugin/skills/tasks/SKILL.md +11 -0
  41. package/dist/probes.js +110 -0
  42. package/dist/probes.js.map +1 -0
  43. package/dist/prompt.js +78 -0
  44. package/dist/prompt.js.map +1 -0
  45. package/dist/provider-routes.js +91 -0
  46. package/dist/provider-routes.js.map +1 -0
  47. package/dist/providers/claude.js +522 -0
  48. package/dist/providers/claude.js.map +1 -0
  49. package/dist/providers/codex.js +543 -0
  50. package/dist/providers/codex.js.map +1 -0
  51. package/dist/providers/detect.js +116 -0
  52. package/dist/providers/detect.js.map +1 -0
  53. package/dist/providers/exec.js +205 -0
  54. package/dist/providers/exec.js.map +1 -0
  55. package/dist/{session-stub.js → providers/stub.js} +106 -12
  56. package/dist/providers/stub.js.map +1 -0
  57. package/dist/providers/types.js +14 -0
  58. package/dist/providers/types.js.map +1 -0
  59. package/dist/proxy.js +302 -24
  60. package/dist/proxy.js.map +1 -1
  61. package/dist/serve.js +206 -56
  62. package/dist/serve.js.map +1 -1
  63. package/dist/session-events.js +5 -4
  64. package/dist/session-events.js.map +1 -1
  65. package/dist/session.js +212 -379
  66. package/dist/session.js.map +1 -1
  67. package/dist/sessions.js +235 -25
  68. package/dist/sessions.js.map +1 -1
  69. package/dist/setup.js +71 -0
  70. package/dist/setup.js.map +1 -0
  71. package/dist/skills/done/SKILL.md +15 -0
  72. package/dist/skills/init/SKILL.md +41 -0
  73. package/dist/skills/intake/SKILL.md +35 -0
  74. package/dist/skills/next/SKILL.md +72 -0
  75. package/dist/skills/serve/SKILL.md +94 -0
  76. package/dist/skills/task/SKILL.md +17 -0
  77. package/dist/skills/tasks/SKILL.md +11 -0
  78. package/dist/skills.js +86 -0
  79. package/dist/skills.js.map +1 -0
  80. package/dist/start.js +284 -0
  81. package/dist/start.js.map +1 -0
  82. package/dist/target.js +86 -28
  83. package/dist/target.js.map +1 -1
  84. package/dist/tasks.js +18 -8
  85. package/dist/tasks.js.map +1 -1
  86. package/dist/version.js +19 -0
  87. package/dist/version.js.map +1 -0
  88. package/dist/write-task.js +42 -0
  89. package/dist/write-task.js.map +1 -0
  90. package/package.json +38 -3
  91. package/dist/session-stub.js.map +0 -1
package/README.md CHANGED
@@ -1,17 +1,47 @@
1
1
  # claude-review-tool
2
2
 
3
- The `crt` CLI for the **Claude Review Tool**: a local proxy that injects an annotation overlay into your running dev site, lets you talk to Claude in the page, and writes self-contained task files to `.crt/tasks/` that any later Claude Code session can complete with `/crt:next`.
3
+ The `crt` CLI for the **Claude Review Tool**: a local CRT server plus an annotation overlay that one dev-only line in your app loads onto your app's own URL (or that `crt proxy` injects into a proxied copy), lets you talk to Claude (or Codex) in the page, and writes self-contained task files to `.crt/tasks/` that any later Claude Code session can complete with `/crt:next`.
4
4
 
5
5
  ```bash
6
- cd my-app && npm run dev # your dev server
7
- npx claude-review-tool serve --open # proxies it at http://localhost:4400 and opens the browser
6
+ # one-time, per machine
7
+ npm i -g claude-review-tool
8
+ crt setup # registers the bundled plugin with Claude Code: /crt:init, /crt:serve, /crt:next, …
9
+
10
+ # one-time, per project
11
+ crt init # .crt/ (README, tasks, config), 2 .gitignore lines, a CRT section in CLAUDE.md — each announced,
12
+ # then it prints the one-line snippet for your framework; /crt:init in Claude Code applies it for you
13
+
14
+ # per session
15
+ npm run dev # your dev server, your URL
16
+ crt # CRT server on :4400; opens your app; the CRT button is on your page
8
17
  ```
9
18
 
10
- Most people install it through the Claude Code plugin instead, which adds `/crt:serve`, `/crt:next`, `/crt:tasks`, `/crt:task` and `/crt:done`:
19
+ Add CRT to your app (development only — production builds contain nothing from CRT):
11
20
 
12
- ```bash
13
- claude plugin marketplace add simv/crt
14
- claude plugin install crt@crt
21
+ ```tsx
22
+ // Next.js (App Router) — app/layout.tsx
23
+ import { CrtDevTools } from "claude-review-tool/react";
24
+ …
25
+ <body>{children}<CrtDevTools /></body>
26
+ ```
27
+
28
+ ```ts
29
+ // Vite — vite.config.ts
30
+ import { crt } from "claude-review-tool/vite";
31
+ export default defineConfig({ plugins: [react(), crt()] });
15
32
  ```
16
33
 
17
- Full documentation — the loop, the task format, script-tag mode, troubleshooting — is in the repository README: https://github.com/simv/crt#readme. Node ≥ 20; Windows, macOS and Linux. MIT.
34
+ ```ts
35
+ // any bundled app — the client entry (src/main.tsx, src/index.ts, …)
36
+ import { mountCrt } from "claude-review-tool/loader";
37
+ if (process.env.NODE_ENV !== "production") mountCrt(); // the guard is optional (F-98); it lets the bundler drop the import
38
+ ```
39
+
40
+ ```html
41
+ <!-- no bundler — the development page only -->
42
+ <script src="http://localhost:4400/__crt/loader.js"></script>
43
+ ```
44
+
45
+ The plugin ships inside this package (`dist/plugin-marketplace/`), so `crt setup` needs no GitHub access and the plugin version always equals the `crt` version. `npx claude-review-tool` works with no install at all (the first run downloads ~220 MB). `crt doctor` checks node, project, `.crt`, mode, target, integration, instructions, port, agents and plugin when something is off.
46
+
47
+ Full documentation — install options, the four snippets and where each starts capturing, the production guarantee, what lands in your repo, the loop, providers, the task format, proxy mode, troubleshooting — is in the repository README: https://github.com/simv/crt#readme. Node ≥ 20; Windows, macOS and Linux. MIT.
package/dist/args.js CHANGED
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Minimal argv parser: first positional is the command, `--k v` / `--k=v` / `--flag` become flags.
3
+ * Switches that never take a value are listed so `crt --yes 3000` keeps `3000` as the target (F-69).
4
+ */
5
+ export const BOOLEAN_FLAGS = new Set(["open", "no-open", "yes", "replace", "json", "refresh", "validate", "global", "help", "h", "version", "no-instructions", "snippet"]);
1
6
  export function parseArgs(argv) {
2
7
  const positionals = [];
3
8
  const flags = {};
@@ -9,8 +14,9 @@ export function parseArgs(argv) {
9
14
  flags[a.slice(2, eq)] = a.slice(eq + 1);
10
15
  }
11
16
  else {
17
+ const name = a.slice(2);
12
18
  const next = argv[i + 1];
13
- if (next !== undefined && !next.startsWith("--")) {
19
+ if (!BOOLEAN_FLAGS.has(name) && next !== undefined && !next.startsWith("--")) {
14
20
  flags[a.slice(2)] = next;
15
21
  i++;
16
22
  }
package/dist/args.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACzB,CAAC,EAAE,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;AAQ3K,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7E,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACzB,CAAC,EAAE,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/E,CAAC"}
@@ -218,6 +218,7 @@ export const CaptureBundleSchema = obj({
218
218
  id: str("F-23 capture id, assigned by the server (empty when sent by the overlay)"),
219
219
  page: PageSchema,
220
220
  framework: FrameworkSchema,
221
+ note: optional(str("F-68 the developer's message for a page-level chat (a capture with no annotations); absent otherwise", { max: 4000 })),
221
222
  annotations: arr(AnnotationSchema, "F-11 the frozen annotation set, in badge order"),
222
223
  console: arr(ConsoleEntrySchema, "F-20 console.error/warn + uncaught errors since overlay load, oldest first", {
223
224
  max: MAX_CONSOLE_ENTRIES,
@@ -1 +1 @@
1
- {"version":3,"file":"capture-schema.js","sourceRoot":"","sources":["../src/capture-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture-schema.js","sourceRoot":"","sources":["../src/capture-schema.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -2,60 +2,184 @@
2
2
  /**
3
3
  * CRT command-line entry point.
4
4
  *
5
- * Commands (see docs/PRD.md §6):
6
- * crt serve [--target <url>] [--port <n>] [--open] F-1, F-5
7
- * crt init F-35
8
- * crt tasks [--json] F-33 (also refreshes the README index, F-34)
9
- * crt task <ID> [--validate] F-33 (F-32 format check)
5
+ * Commands (see docs/PRD.md §6, docs/PRD-providers.md §6, docs/PRD-setup.md §6.1 and docs/PRD-embedded.md §6.1):
6
+ * crt [target] [--port <n>] [--open|--no-open] [--yes] [--replace] [--provider <id>] F-69…F-73 (the guided start), embedded by default (F-91)
7
+ * crt serve [target] [--target <url>] [--mode <embedded|proxy>] … the same under its explicit name (F-1, F-5, F-43, F-91)
8
+ * crt proxy [target] … ≡ crt serve --mode proxy (F-92: the v0.3 reverse proxy)
9
+ * crt doctor F-76
10
+ * crt setup [--claude <path>] F-86 (registers the bundled plugin with Claude Code)
11
+ * crt init [--yes] [--no-instructions] [--snippet [--json]] F-100 (explicit, itemised, idempotent; the F-101 section, the F-102 snippet)
12
+ * crt tasks [--json] F-33 (also refreshes the README index, F-34)
13
+ * crt task <ID> [--validate] F-33 (F-32 format check)
14
+ * crt providers [--json] [--refresh] F-45 (every provider's state + the F-44 decision)
15
+ * crt mcp F-49 (stdio write_task server; spawned by an agent, not by hand)
16
+ * crt skills install [--provider <id>] [--global] [--dir <path>] F-58 (the plugin's skills as portable Agent Skills)
17
+ * crt help | --help | -h, crt --version F-69
10
18
  *
11
- * Every failure is one `crt: <message>` line on stderr and a non-zero exit (N-6).
19
+ * Every failure is one `crt: <message>` line on stderr and a non-zero exit (N-6). The server
20
+ * and provider modules (and with them the Agent SDK) are imported only by the commands that
21
+ * need them, so `crt mcp` starts fast and prints nothing but protocol frames on stdout.
12
22
  */
13
- import { readFileSync } from "node:fs";
23
+ import { existsSync, readFileSync } from "node:fs";
14
24
  import { basename, resolve } from "node:path";
15
25
  import { fileURLToPath } from "node:url";
16
26
  import { parseArgs } from "./args.js";
17
27
  import { CrtError } from "./errors.js";
18
- import { initProject, readConfig } from "./init.js";
28
+ import { readConfig, runInit } from "./init.js";
19
29
  import { findProjectRoot } from "./project.js";
20
- import { serve } from "./serve.js";
30
+ import { looksLikeTarget } from "./target.js";
21
31
  import { findTaskFile, listTasks, validateTaskText, writeIndex } from "./tasks.js";
32
+ import { packageVersion } from "./version.js";
22
33
  const USAGE = [
23
34
  "crt — Claude Review Tool",
24
35
  "",
25
36
  "Usage:",
26
- " crt serve [--target <url>] [--port <n>] [--open]",
27
- " crt init",
37
+ " crt [target] start the CRT server on http://localhost:4400 and open your app (embedded: the app loads the CRT loader)",
38
+ " crt serve [target] the same, under its explicit name",
39
+ " [--mode <embedded|proxy>] [--target <url>] [--port <n>] [--open | --no-open] [--yes] [--replace] [--provider <id>]",
40
+ " crt proxy [target] proxy the dev server through http://localhost:4400 instead (the same flags; = crt serve --mode proxy)",
41
+ " crt doctor check node, project, .crt, mode, target, integration, instructions, port, providers, plugin",
42
+ " crt setup register the bundled Claude Code plugin (/crt:serve, /crt:next, …) [--claude <path>]",
43
+ " crt init set the project up: .crt/ (README, tasks, config), 2 .gitignore lines, a CRT section in CLAUDE.md — each announced — then the snippet for your framework",
44
+ " [--yes] [--no-instructions] [--snippet [--json]]",
28
45
  " crt tasks [--json]",
29
46
  " crt task <ID> [--validate]",
47
+ " crt providers [--json] [--refresh]",
48
+ " crt mcp (stdio write_task server for agents; needs CRT_MCP_TOKEN and CRT_MCP_PORT)",
49
+ " crt --version",
50
+ "",
51
+ "A target is a port (3000), host:port (localhost:3000) or a URL. `crt` remembers the one you",
52
+ "typed or picked in .crt/config.local.json; `crt <port>` switches it.",
30
53
  ].join("\n");
54
+ const COMMANDS = new Set(["serve", "proxy", "doctor", "setup", "init", "tasks", "task", "providers", "mcp", "skills", "help"]);
55
+ /** F-77: a second Ctrl+C within this window exits at once. */
56
+ const FORCE_EXIT_MS = 2_000;
31
57
  async function main(argv) {
32
- const { command, positionals, flags } = parseArgs(argv);
58
+ const parsed = parseArgs(argv);
59
+ let { command, positionals } = parsed;
60
+ const { flags } = parsed;
61
+ // F-69: `crt --version`, `crt help` / `--help` / `-h`.
62
+ if (command === undefined && flags.version === true) {
63
+ const { sdkVersion } = await import("./providers/claude.js");
64
+ console.log(`crt ${packageVersion()} (agent sdk ${sdkVersion() ?? "not installed"})`);
65
+ return 0;
66
+ }
67
+ if (command === "help" || command === "-h" || flags.help === true || flags.h === true) {
68
+ console.log(USAGE);
69
+ return 0;
70
+ }
71
+ // F-69: bare `crt` and `crt <target>` start.
72
+ if (command === undefined || looksLikeTarget(command)) {
73
+ positionals = command === undefined ? [] : [command, ...positionals];
74
+ command = "serve";
75
+ }
76
+ else if (!COMMANDS.has(command)) {
77
+ throw new CrtError(`unknown command "${command}" — a target is a port, host:port or URL; \`crt help\` lists commands`, 2);
78
+ }
33
79
  switch (command) {
34
- case "serve": {
35
- const handle = await serve({
80
+ case "mcp": {
81
+ // F-49: stdout is the MCP transport from here on; nothing else may write to it.
82
+ const { runMcpStdio } = await import("./mcp-stdio.js");
83
+ return runMcpStdio({ input: process.stdin, output: process.stdout, env: process.env });
84
+ }
85
+ case "serve":
86
+ case "proxy": {
87
+ // F-91/F-92: `crt proxy [target]` ≡ `crt serve --mode proxy [target]`; the same flags and steps.
88
+ const positional = positionals[0];
89
+ if (positional !== undefined && !looksLikeTarget(positional)) {
90
+ throw new CrtError(`target "${positional}" is not a port, host:port or URL — try 3000, localhost:3000 or http://…`, 2);
91
+ }
92
+ if (positionals.length > 1)
93
+ throw new CrtError(`unexpected argument "${positionals[1]}" — \`crt help\` lists commands`, 2);
94
+ const { isInteractive, createTerminalPrompter } = await import("./prompt.js");
95
+ const interactive = isInteractive({ yes: flags.yes === true });
96
+ // §5.2: the browser opens by default on a terminal (`--no-open` suppresses) and only with `--open` otherwise.
97
+ const open = flags["no-open"] === true ? false : flags.open === true || interactive;
98
+ const { serve } = await import("./serve.js");
99
+ const result = await serve({
100
+ command,
101
+ mode: stringFlag(flags.mode, "--mode <embedded|proxy>"),
102
+ positional,
36
103
  target: stringFlag(flags.target, "--target <url>"),
37
104
  port: portFlag(flags.port),
38
- open: flags.open === true,
105
+ open,
106
+ replace: flags.replace === true,
107
+ yes: flags.yes === true,
108
+ provider: stringFlag(flags.provider, "--provider <id>"),
109
+ interactive,
110
+ ...(interactive ? { prompt: createTerminalPrompter({ input: process.stdin, output: process.stdout }) } : {}),
39
111
  overlayPath: fileURLToPath(new URL("./overlay.js", import.meta.url)),
40
112
  intakePromptPath: fileURLToPath(new URL("./intake.md", import.meta.url)),
41
113
  });
114
+ if (result.kind === "reused")
115
+ return 0;
116
+ const { handle } = result;
117
+ // F-77: Ctrl+C / SIGTERM close cleanly and exit 0; a second Ctrl+C within 2 s exits at once.
118
+ let stopping = false;
42
119
  const stop = () => {
120
+ if (stopping)
121
+ process.exit(0);
122
+ stopping = true;
123
+ const n = handle.openSessions();
124
+ console.log(`Stopping CRT … ${n} session${n === 1 ? "" : "s"} ended; written task files are kept.`);
43
125
  void handle.close().then(() => process.exit(0));
126
+ setTimeout(() => process.exit(0), FORCE_EXIT_MS).unref();
44
127
  };
45
- process.once("SIGINT", stop);
46
- process.once("SIGTERM", stop);
128
+ process.on("SIGINT", stop);
129
+ process.on("SIGTERM", stop);
47
130
  return -1; // keep running
48
131
  }
132
+ case "doctor": {
133
+ const { runDoctor } = await import("./doctor.js");
134
+ const r = await runDoctor({ version: packageVersion() });
135
+ console.log(r.text);
136
+ return r.exitCode;
137
+ }
138
+ case "setup": {
139
+ // F-86: the marketplace built by F-85 sits next to cli.js in the published package.
140
+ const { runSetup } = await import("./setup.js");
141
+ const r = await runSetup({
142
+ version: packageVersion(),
143
+ marketplaceDir: resolve(fileURLToPath(new URL("./plugin-marketplace/", import.meta.url))),
144
+ claude: stringFlag(flags.claude, "--claude <path>") ?? null,
145
+ });
146
+ for (const line of r.lines)
147
+ console.log(line);
148
+ return 0;
149
+ }
49
150
  case "init": {
151
+ // F-100: the plan, `Go ahead? [Y/n]` on a terminal without --yes (off a terminal it applies without asking:
152
+ // the command is explicit), one line per write, then the F-102 snippet. The provider decides which file
153
+ // to create when neither CLAUDE.md nor AGENTS.md exists (F-101): the F-43 resolution, as `crt providers`
154
+ // gets it, resolved only then (preflight is the only spawn).
50
155
  const root = findProjectRoot();
51
- const r = initProject(root);
52
- console.log(r.created.length
53
- ? `crt init: created ${r.created.join(", ")}`
54
- : `crt init: ${root} already initialised`);
156
+ const { isInteractive, createTerminalPrompter } = await import("./prompt.js");
157
+ const interactive = isInteractive({ yes: flags.yes === true });
158
+ await runInit(root, {
159
+ yes: flags.yes === true,
160
+ instructions: flags["no-instructions"] !== true,
161
+ snippet: flags.snippet === true,
162
+ json: flags.json === true,
163
+ interactive,
164
+ ...(interactive ? { prompt: createTerminalPrompter({ input: process.stdin, output: process.stdout }) } : {}),
165
+ version: packageVersion(),
166
+ provider: async () => {
167
+ const { ProviderRegistry } = await import("./session.js");
168
+ const providers = new ProviderRegistry({ root, config: readConfig(root) });
169
+ await providers.refresh();
170
+ return providers.resolve(null).provider;
171
+ },
172
+ log: (line) => console.log(line),
173
+ });
55
174
  return 0;
56
175
  }
57
176
  case "tasks": {
58
177
  const tasksDir = tasksDirOf(findProjectRoot());
178
+ if (!existsSync(tasksDir)) {
179
+ // F-99: an un-initialised project is not an error here.
180
+ console.log(flags.json === true ? JSON.stringify({ tasksDir: null, tasks: [] }, null, 2) : "no tasks (CRT is not set up here — run crt init)");
181
+ return 0;
182
+ }
59
183
  const tasks = listTasks(tasksDir);
60
184
  writeIndex(tasksDir);
61
185
  if (flags.json === true) {
@@ -68,8 +192,11 @@ async function main(argv) {
68
192
  }
69
193
  const statusW = Math.max(...tasks.map((t) => t.status.length));
70
194
  const priorityW = Math.max(...tasks.map((t) => t.priority.length));
195
+ const providerW = Math.max(...tasks.map((t) => (t.provider ?? "").length));
71
196
  for (const t of tasks) {
72
- console.log(`${t.id} ${t.status.padEnd(statusW)} ${t.priority.padEnd(priorityW)} ${t.title} (${t.updated.slice(0, 10)})`);
197
+ // F-48: the provider as one word after the status (blank for v0.1 files, column omitted when none has one).
198
+ const provider = providerW ? `${(t.provider ?? "").padEnd(providerW)} ` : "";
199
+ console.log(`${t.id} ${t.status.padEnd(statusW)} ${provider}${t.priority.padEnd(priorityW)} ${t.title} (${t.updated.slice(0, 10)})`);
73
200
  }
74
201
  const backlog = tasks.filter((t) => t.status === "backlog").length;
75
202
  console.log(`${tasks.length} task${tasks.length === 1 ? "" : "s"}, ${backlog} in backlog`);
@@ -97,12 +224,49 @@ async function main(argv) {
97
224
  process.stdout.write(text);
98
225
  return 0;
99
226
  }
100
- case undefined:
101
- console.log(USAGE);
227
+ case "providers": {
228
+ // F-45: one row per built-in profile and the F-44 decision. A CLI run is always fresh, so
229
+ // --refresh (which bypasses a running server's cache) is accepted and changes nothing here.
230
+ const root = findProjectRoot();
231
+ const { ProviderRegistry, renderProviders } = await import("./session.js");
232
+ const providers = new ProviderRegistry({ root, config: readConfig(root) });
233
+ await providers.refresh();
234
+ if (flags.json === true) {
235
+ console.log(JSON.stringify(providers.payload(), null, 2));
236
+ return 0;
237
+ }
238
+ console.log(renderProviders(providers.status(), providers.detection()));
239
+ return 0;
240
+ }
241
+ case "skills": {
242
+ // F-58: the plugin's skills as Agent Skills for another agent; the sources ship in dist/skills.
243
+ if (positionals[0] !== "install")
244
+ throw new CrtError("usage: crt skills install [--provider <id>] [--global] [--dir <path>]", 2);
245
+ const root = findProjectRoot();
246
+ const dir = stringFlag(flags.dir, "--dir <path>") ?? null;
247
+ const providerId = stringFlag(flags.provider, "--provider <id>");
248
+ const { ProviderRegistry } = await import("./session.js");
249
+ const { installSkills } = await import("./skills.js");
250
+ const providers = new ProviderRegistry({ root, config: readConfig(root) });
251
+ let profile = null;
252
+ if (providerId) {
253
+ profile = providers.get(providerId);
254
+ if (!profile)
255
+ throw new CrtError(`--provider must be one of ${providers.ids().join(", ")} (got "${providerId}")`);
256
+ }
257
+ else if (!dir) {
258
+ // No --provider and no --dir: the provider the project resolves to (F-43 layers 3–6).
259
+ profile = providers.get(providers.resolve(null).provider);
260
+ }
261
+ const r = installSkills({ sourceDir: fileURLToPath(new URL("./skills/", import.meta.url)), root, profile, global: flags.global === true, dir });
262
+ for (const p of r.written)
263
+ console.log(`crt skills: wrote ${p}`);
264
+ console.log(r.written.length ? `crt skills: ${r.written.length} skill${r.written.length === 1 ? "" : "s"} installed in ${r.dir}` : `crt skills: ${r.dir} already up to date (${r.unchanged.length} skills)`);
102
265
  return 0;
266
+ }
103
267
  default:
104
- console.error(`crt: unknown command "${command}"\n\n${USAGE}`);
105
- return 1;
268
+ console.log(USAGE);
269
+ return 0;
106
270
  }
107
271
  }
108
272
  function tasksDirOf(root) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}