ctxr-cli 0.34.0 → 0.35.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 (125) hide show
  1. package/README.md +25 -5
  2. package/dist/commands/plugin-build.d.ts +33 -0
  3. package/dist/commands/plugin-build.d.ts.map +1 -0
  4. package/dist/commands/plugin-build.js +51 -0
  5. package/dist/commands/plugin-build.js.map +1 -0
  6. package/dist/commands/publish-check.d.ts.map +1 -1
  7. package/dist/commands/publish-check.js +35 -4
  8. package/dist/commands/publish-check.js.map +1 -1
  9. package/dist/commands/serve.d.ts.map +1 -1
  10. package/dist/commands/serve.js +10 -2
  11. package/dist/commands/serve.js.map +1 -1
  12. package/dist/commands/session-start.d.ts.map +1 -1
  13. package/dist/commands/session-start.js +12 -38
  14. package/dist/commands/session-start.js.map +1 -1
  15. package/dist/core/fs/atomic.d.ts +3 -2
  16. package/dist/core/fs/atomic.d.ts.map +1 -1
  17. package/dist/core/fs/atomic.js +3 -2
  18. package/dist/core/fs/atomic.js.map +1 -1
  19. package/dist/core/mcp/cli-runner.d.ts +41 -0
  20. package/dist/core/mcp/cli-runner.d.ts.map +1 -0
  21. package/dist/core/mcp/cli-runner.js +81 -0
  22. package/dist/core/mcp/cli-runner.js.map +1 -0
  23. package/dist/core/mcp/jsonrpc.d.ts +13 -1
  24. package/dist/core/mcp/jsonrpc.d.ts.map +1 -1
  25. package/dist/core/mcp/jsonrpc.js +1 -1
  26. package/dist/core/mcp/jsonrpc.js.map +1 -1
  27. package/dist/core/mcp/member-sessions.d.ts +48 -0
  28. package/dist/core/mcp/member-sessions.d.ts.map +1 -0
  29. package/dist/core/mcp/member-sessions.js +85 -0
  30. package/dist/core/mcp/member-sessions.js.map +1 -0
  31. package/dist/core/mcp/ownership.d.ts +51 -0
  32. package/dist/core/mcp/ownership.d.ts.map +1 -0
  33. package/dist/core/mcp/ownership.js +101 -0
  34. package/dist/core/mcp/ownership.js.map +1 -0
  35. package/dist/core/mcp/paths.d.ts +48 -0
  36. package/dist/core/mcp/paths.d.ts.map +1 -0
  37. package/dist/core/mcp/paths.js +111 -0
  38. package/dist/core/mcp/paths.js.map +1 -0
  39. package/dist/core/mcp/sessions.d.ts +24 -46
  40. package/dist/core/mcp/sessions.d.ts.map +1 -1
  41. package/dist/core/mcp/sessions.js +31 -103
  42. package/dist/core/mcp/sessions.js.map +1 -1
  43. package/dist/core/mcp/tool-map.d.ts +94 -0
  44. package/dist/core/mcp/tool-map.d.ts.map +1 -0
  45. package/dist/core/mcp/tool-map.js +211 -0
  46. package/dist/core/mcp/tool-map.js.map +1 -0
  47. package/dist/core/mcp/tools/capture.d.ts +7 -2
  48. package/dist/core/mcp/tools/capture.d.ts.map +1 -1
  49. package/dist/core/mcp/tools/capture.js +69 -18
  50. package/dist/core/mcp/tools/capture.js.map +1 -1
  51. package/dist/core/mcp/tools/cli.d.ts +97 -0
  52. package/dist/core/mcp/tools/cli.d.ts.map +1 -0
  53. package/dist/core/mcp/tools/cli.js +271 -0
  54. package/dist/core/mcp/tools/cli.js.map +1 -0
  55. package/dist/core/mcp/tools/edit.d.ts +62 -28
  56. package/dist/core/mcp/tools/edit.d.ts.map +1 -1
  57. package/dist/core/mcp/tools/edit.js +182 -153
  58. package/dist/core/mcp/tools/edit.js.map +1 -1
  59. package/dist/core/mcp/tools/files.d.ts +37 -11
  60. package/dist/core/mcp/tools/files.d.ts.map +1 -1
  61. package/dist/core/mcp/tools/files.js +122 -100
  62. package/dist/core/mcp/tools/files.js.map +1 -1
  63. package/dist/core/mcp/tools/index.d.ts +12 -3
  64. package/dist/core/mcp/tools/index.d.ts.map +1 -1
  65. package/dist/core/mcp/tools/index.js +161 -58
  66. package/dist/core/mcp/tools/index.js.map +1 -1
  67. package/dist/core/mcp/tools/sessions.d.ts +145 -0
  68. package/dist/core/mcp/tools/sessions.d.ts.map +1 -0
  69. package/dist/core/mcp/tools/sessions.js +226 -0
  70. package/dist/core/mcp/tools/sessions.js.map +1 -0
  71. package/dist/core/plugin/build.d.ts +70 -0
  72. package/dist/core/plugin/build.d.ts.map +1 -0
  73. package/dist/core/plugin/build.js +159 -0
  74. package/dist/core/plugin/build.js.map +1 -0
  75. package/dist/core/plugin/routes.d.ts +35 -0
  76. package/dist/core/plugin/routes.d.ts.map +1 -0
  77. package/dist/core/plugin/routes.js +77 -0
  78. package/dist/core/plugin/routes.js.map +1 -0
  79. package/dist/core/plugin/zip.d.ts +17 -0
  80. package/dist/core/plugin/zip.d.ts.map +1 -0
  81. package/dist/core/plugin/zip.js +75 -0
  82. package/dist/core/plugin/zip.js.map +1 -0
  83. package/dist/core/session/start.d.ts +46 -0
  84. package/dist/core/session/start.d.ts.map +1 -0
  85. package/dist/core/session/start.js +33 -0
  86. package/dist/core/session/start.js.map +1 -0
  87. package/dist/core/skills.d.ts +20 -2
  88. package/dist/core/skills.d.ts.map +1 -1
  89. package/dist/core/skills.js +56 -3
  90. package/dist/core/skills.js.map +1 -1
  91. package/dist/run.d.ts +12 -0
  92. package/dist/run.d.ts.map +1 -1
  93. package/dist/run.js +81 -58
  94. package/dist/run.js.map +1 -1
  95. package/dist/version.d.ts +1 -1
  96. package/dist/version.js +1 -1
  97. package/package.json +1 -1
  98. package/templates/mcp/Delete.md +6 -0
  99. package/templates/mcp/Edit.md +6 -5
  100. package/templates/mcp/Glob.md +2 -2
  101. package/templates/mcp/Grep.md +2 -1
  102. package/templates/mcp/Move.md +7 -0
  103. package/templates/mcp/Read.md +4 -4
  104. package/templates/mcp/Write.md +4 -4
  105. package/templates/mcp/ctxr.md +7 -0
  106. package/templates/mcp/ctxr_write.md +8 -0
  107. package/templates/mcp/server-instructions.md +11 -3
  108. package/templates/mcp/session_discard.md +4 -0
  109. package/templates/mcp/session_list.md +7 -0
  110. package/templates/mcp/session_rebase.md +5 -0
  111. package/templates/mcp/session_start.md +7 -0
  112. package/templates/mcp/session_status.md +3 -0
  113. package/templates/mcp/session_submit.md +8 -0
  114. package/templates/plugin/README.md +13 -0
  115. package/templates/plugin/chatgpt-mcp.json +19 -0
  116. package/templates/plugin/chatgpt-plugin.json +13 -0
  117. package/templates/plugin/claude-mcp.json +8 -0
  118. package/templates/plugin/claude-plugin.json +6 -0
  119. package/templates/plugin/page.html +47 -0
  120. package/templates/skills/ctxr-publish.md +2 -1
  121. package/templates/skills/mcp/_preamble.md +44 -0
  122. package/dist/core/mcp/drafts.d.ts +0 -30
  123. package/dist/core/mcp/drafts.d.ts.map +0 -1
  124. package/dist/core/mcp/drafts.js +0 -52
  125. package/dist/core/mcp/drafts.js.map +0 -1
@@ -1,52 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { slugifySegment } from '../slug.js';
3
- import { pullStateFor, repoPathOf, sessionsLabelled } from './sessions.js';
4
- /**
5
- * serve-the-store-over-mcp design.md D12–D13: where a member's draft lives.
6
- * One session per member, labelled `mcp-draft-<local part>-<8 hex of the
7
- * email>` — readable in the approval index, and distinct for two members
8
- * whose local parts slugify alike. `Read` uses it to show a member their own
9
- * pending change; `Edit` and `Write` use it to find the session to extend.
10
- */
11
- export const DRAFT_LABEL_PREFIX = 'mcp-draft-';
12
- export function draftLabel(email) {
13
- const local = slugifySegment(email.split('@')[0] ?? 'member').slice(0, 20).replace(/-+$/, '') || 'member';
14
- const digest = createHash('sha256').update(email.toLowerCase()).digest('hex').slice(0, 8);
15
- return `${DRAFT_LABEL_PREFIX}${local}-${digest}`;
16
- }
17
- /** The member's draft on disk and what the forge says about it; null when there is none. */
18
- export async function findDraft(deps, email) {
19
- const label = draftLabel(email);
20
- const session = (await sessionsLabelled(deps, label)).find((s) => s.label === label);
21
- if (session === undefined)
22
- return null;
23
- return { session, state: await pullStateFor(deps, session.branch) };
24
- }
25
- /**
26
- * The member's draft session on disk, without asking the forge — for `Read`, which must answer from local state
27
- * alone so a forge outage or rate limit never stops a read. `land` removes a merged draft's worktree; one whose pull
28
- * request closed unmerged is removed by the member's next `Edit` or `Write`.
29
- */
30
- export async function findLocalDraft(deps, email) {
31
- const label = draftLabel(email);
32
- const session = (await sessionsLabelled(deps, label)).find((s) => s.label === label);
33
- return session === undefined ? null : { session, state: { kind: 'none' } };
34
- }
35
- /**
36
- * A file as the member's draft has committed it, when the draft's committed
37
- * tip changes or adds it; null otherwise. Read from the branch with
38
- * `git show`, never the working tree, so an edit in progress is never seen
39
- * half-applied (design.md D12).
40
- */
41
- export async function draftVersion(deps, draft, storeRelative) {
42
- if (draft.state.kind === 'merged' || draft.state.kind === 'closed-unmerged')
43
- return null;
44
- const repoPath = await repoPathOf(deps, storeRelative);
45
- const base = `refs/remotes/origin/${deps.config.git.default_branch}`;
46
- const changed = await deps.git.run(['diff', '--name-only', '--no-renames', `${base}...${draft.session.branch}`, '--', repoPath], { cwd: deps.canonicalRoot, allowFailure: true });
47
- if (changed.exitCode !== 0 || changed.stdout.trim() === '')
48
- return null;
49
- const shown = await deps.git.run(['show', `${draft.session.branch}:${repoPath}`], { cwd: deps.canonicalRoot, allowFailure: true });
50
- return shown.exitCode === 0 ? shown.stdout : null;
51
- }
52
- //# sourceMappingURL=drafts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drafts.js","sourceRoot":"","sources":["../../../src/core/mcp/drafts.ts"],"names":[],"mappings":"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"}