ctxr-cli 0.33.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.
- package/README.md +40 -6
- package/dist/commands/archive.d.ts +5 -4
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +7 -7
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/catalog-show.d.ts +8 -0
- package/dist/commands/catalog-show.d.ts.map +1 -1
- package/dist/commands/catalog-show.js +29 -2
- package/dist/commands/catalog-show.js.map +1 -1
- package/dist/commands/context-gather.d.ts.map +1 -1
- package/dist/commands/context-gather.js +3 -2
- package/dist/commands/context-gather.js.map +1 -1
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +4 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/graph-build.d.ts +4 -1
- package/dist/commands/graph-build.d.ts.map +1 -1
- package/dist/commands/graph-build.js +14 -5
- package/dist/commands/graph-build.js.map +1 -1
- package/dist/commands/land.d.ts +27 -7
- package/dist/commands/land.d.ts.map +1 -1
- package/dist/commands/land.js +307 -32
- package/dist/commands/land.js.map +1 -1
- package/dist/commands/plugin-build.d.ts +33 -0
- package/dist/commands/plugin-build.d.ts.map +1 -0
- package/dist/commands/plugin-build.js +51 -0
- package/dist/commands/plugin-build.js.map +1 -0
- package/dist/commands/publish-check.d.ts.map +1 -1
- package/dist/commands/publish-check.js +35 -4
- package/dist/commands/publish-check.js.map +1 -1
- package/dist/commands/publish-gather.d.ts.map +1 -1
- package/dist/commands/publish-gather.js +2 -3
- package/dist/commands/publish-gather.js.map +1 -1
- package/dist/commands/review-list.d.ts +19 -5
- package/dist/commands/review-list.d.ts.map +1 -1
- package/dist/commands/review-list.js +55 -6
- package/dist/commands/review-list.js.map +1 -1
- package/dist/commands/rollup-gather.d.ts.map +1 -1
- package/dist/commands/rollup-gather.js +2 -3
- package/dist/commands/rollup-gather.js.map +1 -1
- package/dist/commands/second-opinion.d.ts +33 -0
- package/dist/commands/second-opinion.d.ts.map +1 -0
- package/dist/commands/second-opinion.js +56 -0
- package/dist/commands/second-opinion.js.map +1 -0
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +14 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/session-discard.d.ts +18 -0
- package/dist/commands/session-discard.d.ts.map +1 -0
- package/dist/commands/session-discard.js +31 -0
- package/dist/commands/session-discard.js.map +1 -0
- package/dist/commands/session-list.d.ts +17 -6
- package/dist/commands/session-list.d.ts.map +1 -1
- package/dist/commands/session-list.js +31 -11
- package/dist/commands/session-list.js.map +1 -1
- package/dist/commands/session-rebase.d.ts +18 -0
- package/dist/commands/session-rebase.d.ts.map +1 -0
- package/dist/commands/session-rebase.js +43 -0
- package/dist/commands/session-rebase.js.map +1 -0
- package/dist/commands/session-start.d.ts +8 -0
- package/dist/commands/session-start.d.ts.map +1 -1
- package/dist/commands/session-start.js +52 -38
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/session-status.d.ts +17 -0
- package/dist/commands/session-status.d.ts.map +1 -0
- package/dist/commands/session-status.js +38 -0
- package/dist/commands/session-status.js.map +1 -0
- package/dist/commands/session-submit.d.ts +23 -0
- package/dist/commands/session-submit.d.ts.map +1 -0
- package/dist/commands/session-submit.js +42 -0
- package/dist/commands/session-submit.js.map +1 -0
- package/dist/commands/shared-stores-status.d.ts +24 -0
- package/dist/commands/shared-stores-status.d.ts.map +1 -0
- package/dist/commands/shared-stores-status.js +51 -0
- package/dist/commands/shared-stores-status.js.map +1 -0
- package/dist/commands/shared-stores-sync.d.ts +27 -0
- package/dist/commands/shared-stores-sync.d.ts.map +1 -0
- package/dist/commands/shared-stores-sync.js +115 -0
- package/dist/commands/shared-stores-sync.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +2 -4
- package/dist/commands/verify.js.map +1 -1
- package/dist/config/schema.d.ts +16 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +32 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/core/agents-doc.d.ts +10 -0
- package/dist/core/agents-doc.d.ts.map +1 -1
- package/dist/core/agents-doc.js +26 -1
- package/dist/core/agents-doc.js.map +1 -1
- package/dist/core/approval/decision.d.ts +39 -1
- package/dist/core/approval/decision.d.ts.map +1 -1
- package/dist/core/approval/decision.js +53 -6
- package/dist/core/approval/decision.js.map +1 -1
- package/dist/core/approval/session-group.d.ts +156 -0
- package/dist/core/approval/session-group.d.ts.map +1 -0
- package/dist/core/approval/session-group.js +359 -0
- package/dist/core/approval/session-group.js.map +1 -0
- package/dist/core/approval/session-marker.d.ts +79 -0
- package/dist/core/approval/session-marker.d.ts.map +1 -0
- package/dist/core/approval/session-marker.js +146 -0
- package/dist/core/approval/session-marker.js.map +1 -0
- package/dist/core/approval/store-forges.d.ts +15 -0
- package/dist/core/approval/store-forges.d.ts.map +1 -0
- package/dist/core/approval/store-forges.js +33 -0
- package/dist/core/approval/store-forges.js.map +1 -0
- package/dist/core/browse/approve.d.ts +8 -0
- package/dist/core/browse/approve.d.ts.map +1 -1
- package/dist/core/browse/approve.js +366 -48
- package/dist/core/browse/approve.js.map +1 -1
- package/dist/core/browse/link-resolver.d.ts +9 -4
- package/dist/core/browse/link-resolver.d.ts.map +1 -1
- package/dist/core/browse/link-resolver.js +12 -7
- package/dist/core/browse/link-resolver.js.map +1 -1
- package/dist/core/browse/review.d.ts +5 -0
- package/dist/core/browse/review.d.ts.map +1 -1
- package/dist/core/browse/review.js +8 -0
- package/dist/core/browse/review.js.map +1 -1
- package/dist/core/checks/integrity-checks.d.ts.map +1 -1
- package/dist/core/checks/integrity-checks.js +7 -1
- package/dist/core/checks/integrity-checks.js.map +1 -1
- package/dist/core/checks/manifest.d.ts.map +1 -1
- package/dist/core/checks/manifest.js +2 -0
- package/dist/core/checks/manifest.js.map +1 -1
- package/dist/core/checks/shared-stores-checks.d.ts +17 -0
- package/dist/core/checks/shared-stores-checks.d.ts.map +1 -0
- package/dist/core/checks/shared-stores-checks.js +84 -0
- package/dist/core/checks/shared-stores-checks.js.map +1 -0
- package/dist/core/errors.d.ts +17 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +21 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/forge/github.d.ts +14 -0
- package/dist/core/forge/github.d.ts.map +1 -1
- package/dist/core/forge/github.js +17 -0
- package/dist/core/forge/github.js.map +1 -1
- package/dist/core/fs/atomic.d.ts +3 -2
- package/dist/core/fs/atomic.d.ts.map +1 -1
- package/dist/core/fs/atomic.js +3 -2
- package/dist/core/fs/atomic.js.map +1 -1
- package/dist/core/git/fast-forward.d.ts +23 -0
- package/dist/core/git/fast-forward.d.ts.map +1 -0
- package/dist/core/git/fast-forward.js +38 -0
- package/dist/core/git/fast-forward.js.map +1 -0
- package/dist/core/git/repo.d.ts +11 -0
- package/dist/core/git/repo.d.ts.map +1 -1
- package/dist/core/git/repo.js +25 -0
- package/dist/core/git/repo.js.map +1 -1
- package/dist/core/graph/model.d.ts +27 -0
- package/dist/core/graph/model.d.ts.map +1 -1
- package/dist/core/graph/model.js +68 -2
- package/dist/core/graph/model.js.map +1 -1
- package/dist/core/graph/persist.d.ts.map +1 -1
- package/dist/core/graph/persist.js +3 -2
- package/dist/core/graph/persist.js.map +1 -1
- package/dist/core/mcp/cli-runner.d.ts +41 -0
- package/dist/core/mcp/cli-runner.d.ts.map +1 -0
- package/dist/core/mcp/cli-runner.js +81 -0
- package/dist/core/mcp/cli-runner.js.map +1 -0
- package/dist/core/mcp/jsonrpc.d.ts +13 -1
- package/dist/core/mcp/jsonrpc.d.ts.map +1 -1
- package/dist/core/mcp/jsonrpc.js +1 -1
- package/dist/core/mcp/jsonrpc.js.map +1 -1
- package/dist/core/mcp/member-sessions.d.ts +48 -0
- package/dist/core/mcp/member-sessions.d.ts.map +1 -0
- package/dist/core/mcp/member-sessions.js +85 -0
- package/dist/core/mcp/member-sessions.js.map +1 -0
- package/dist/core/mcp/ownership.d.ts +51 -0
- package/dist/core/mcp/ownership.d.ts.map +1 -0
- package/dist/core/mcp/ownership.js +101 -0
- package/dist/core/mcp/ownership.js.map +1 -0
- package/dist/core/mcp/paths.d.ts +48 -0
- package/dist/core/mcp/paths.d.ts.map +1 -0
- package/dist/core/mcp/paths.js +111 -0
- package/dist/core/mcp/paths.js.map +1 -0
- package/dist/core/mcp/sessions.d.ts +25 -50
- package/dist/core/mcp/sessions.d.ts.map +1 -1
- package/dist/core/mcp/sessions.js +31 -123
- package/dist/core/mcp/sessions.js.map +1 -1
- package/dist/core/mcp/tool-map.d.ts +94 -0
- package/dist/core/mcp/tool-map.d.ts.map +1 -0
- package/dist/core/mcp/tool-map.js +211 -0
- package/dist/core/mcp/tool-map.js.map +1 -0
- package/dist/core/mcp/tools/capture.d.ts +7 -2
- package/dist/core/mcp/tools/capture.d.ts.map +1 -1
- package/dist/core/mcp/tools/capture.js +69 -18
- package/dist/core/mcp/tools/capture.js.map +1 -1
- package/dist/core/mcp/tools/cli.d.ts +97 -0
- package/dist/core/mcp/tools/cli.d.ts.map +1 -0
- package/dist/core/mcp/tools/cli.js +271 -0
- package/dist/core/mcp/tools/cli.js.map +1 -0
- package/dist/core/mcp/tools/edit.d.ts +62 -28
- package/dist/core/mcp/tools/edit.d.ts.map +1 -1
- package/dist/core/mcp/tools/edit.js +182 -153
- package/dist/core/mcp/tools/edit.js.map +1 -1
- package/dist/core/mcp/tools/files.d.ts +37 -11
- package/dist/core/mcp/tools/files.d.ts.map +1 -1
- package/dist/core/mcp/tools/files.js +122 -100
- package/dist/core/mcp/tools/files.js.map +1 -1
- package/dist/core/mcp/tools/index.d.ts +12 -3
- package/dist/core/mcp/tools/index.d.ts.map +1 -1
- package/dist/core/mcp/tools/index.js +161 -58
- package/dist/core/mcp/tools/index.js.map +1 -1
- package/dist/core/mcp/tools/sessions.d.ts +145 -0
- package/dist/core/mcp/tools/sessions.d.ts.map +1 -0
- package/dist/core/mcp/tools/sessions.js +226 -0
- package/dist/core/mcp/tools/sessions.js.map +1 -0
- package/dist/core/notes/list.d.ts.map +1 -1
- package/dist/core/notes/list.js +5 -0
- package/dist/core/notes/list.js.map +1 -1
- package/dist/core/plugin/build.d.ts +70 -0
- package/dist/core/plugin/build.d.ts.map +1 -0
- package/dist/core/plugin/build.js +159 -0
- package/dist/core/plugin/build.js.map +1 -0
- package/dist/core/plugin/routes.d.ts +35 -0
- package/dist/core/plugin/routes.d.ts.map +1 -0
- package/dist/core/plugin/routes.js +77 -0
- package/dist/core/plugin/routes.js.map +1 -0
- package/dist/core/plugin/zip.d.ts +17 -0
- package/dist/core/plugin/zip.d.ts.map +1 -0
- package/dist/core/plugin/zip.js +75 -0
- package/dist/core/plugin/zip.js.map +1 -0
- package/dist/core/reconcile.d.ts.map +1 -1
- package/dist/core/reconcile.js +2 -1
- package/dist/core/reconcile.js.map +1 -1
- package/dist/core/retrieval/pass.d.ts.map +1 -1
- package/dist/core/retrieval/pass.js +5 -4
- package/dist/core/retrieval/pass.js.map +1 -1
- package/dist/core/rollup.d.ts.map +1 -1
- package/dist/core/rollup.js +2 -3
- package/dist/core/rollup.js.map +1 -1
- package/dist/core/root.d.ts.map +1 -1
- package/dist/core/root.js +33 -2
- package/dist/core/root.js.map +1 -1
- package/dist/core/second-opinion/environment.d.ts +21 -0
- package/dist/core/second-opinion/environment.d.ts.map +1 -0
- package/dist/core/second-opinion/environment.js +70 -0
- package/dist/core/second-opinion/environment.js.map +1 -0
- package/dist/core/second-opinion/judge.d.ts +29 -0
- package/dist/core/second-opinion/judge.d.ts.map +1 -0
- package/dist/core/second-opinion/judge.js +55 -0
- package/dist/core/second-opinion/judge.js.map +1 -0
- package/dist/core/second-opinion/launch.d.ts +16 -0
- package/dist/core/second-opinion/launch.d.ts.map +1 -0
- package/dist/core/second-opinion/launch.js +75 -0
- package/dist/core/second-opinion/launch.js.map +1 -0
- package/dist/core/second-opinion/lineup.d.ts +82 -0
- package/dist/core/second-opinion/lineup.d.ts.map +1 -0
- package/dist/core/second-opinion/lineup.js +113 -0
- package/dist/core/second-opinion/lineup.js.map +1 -0
- package/dist/core/second-opinion/modes.d.ts +98 -0
- package/dist/core/second-opinion/modes.d.ts.map +1 -0
- package/dist/core/second-opinion/modes.js +224 -0
- package/dist/core/second-opinion/modes.js.map +1 -0
- package/dist/core/second-opinion/prompts.d.ts +18 -0
- package/dist/core/second-opinion/prompts.d.ts.map +1 -0
- package/dist/core/second-opinion/prompts.js +65 -0
- package/dist/core/second-opinion/prompts.js.map +1 -0
- package/dist/core/session/commit.d.ts +29 -0
- package/dist/core/session/commit.d.ts.map +1 -0
- package/dist/core/session/commit.js +22 -0
- package/dist/core/session/commit.js.map +1 -0
- package/dist/core/session/discard.d.ts +24 -0
- package/dist/core/session/discard.d.ts.map +1 -0
- package/dist/core/session/discard.js +68 -0
- package/dist/core/session/discard.js.map +1 -0
- package/dist/core/session/list.d.ts +48 -0
- package/dist/core/session/list.d.ts.map +1 -0
- package/dist/core/session/list.js +55 -0
- package/dist/core/session/list.js.map +1 -0
- package/dist/core/session/rebase.d.ts +34 -0
- package/dist/core/session/rebase.d.ts.map +1 -0
- package/dist/core/session/rebase.js +87 -0
- package/dist/core/session/rebase.js.map +1 -0
- package/dist/core/session/remote.d.ts +80 -0
- package/dist/core/session/remote.d.ts.map +1 -0
- package/dist/core/session/remote.js +102 -0
- package/dist/core/session/remote.js.map +1 -0
- package/dist/core/session/resolve.d.ts +41 -0
- package/dist/core/session/resolve.d.ts.map +1 -0
- package/dist/core/session/resolve.js +109 -0
- package/dist/core/session/resolve.js.map +1 -0
- package/dist/core/session/start.d.ts +46 -0
- package/dist/core/session/start.d.ts.map +1 -0
- package/dist/core/session/start.js +33 -0
- package/dist/core/session/start.js.map +1 -0
- package/dist/core/session/status.d.ts +47 -0
- package/dist/core/session/status.d.ts.map +1 -0
- package/dist/core/session/status.js +55 -0
- package/dist/core/session/status.js.map +1 -0
- package/dist/core/session/submit.d.ts +67 -0
- package/dist/core/session/submit.d.ts.map +1 -0
- package/dist/core/session/submit.js +254 -0
- package/dist/core/session/submit.js.map +1 -0
- package/dist/core/shared-stores-location.d.ts +17 -0
- package/dist/core/shared-stores-location.d.ts.map +1 -0
- package/dist/core/shared-stores-location.js +22 -0
- package/dist/core/shared-stores-location.js.map +1 -0
- package/dist/core/shared-stores.d.ts +69 -0
- package/dist/core/shared-stores.d.ts.map +1 -0
- package/dist/core/shared-stores.js +100 -0
- package/dist/core/shared-stores.js.map +1 -0
- package/dist/core/skills.d.ts +20 -2
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +70 -13
- package/dist/core/skills.js.map +1 -1
- package/dist/run.d.ts +12 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +194 -55
- package/dist/run.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/templates/agents/shared-stores.md +11 -0
- package/templates/approve/copies-missing.md +1 -0
- package/templates/approve/elsewhere-heading.md +1 -0
- package/templates/approve/elsewhere-intro.md +1 -0
- package/templates/approve/homed-elsewhere.md +1 -0
- package/templates/approve/not-decider.md +1 -0
- package/templates/approve/part-heading.md +1 -0
- package/templates/approve/parts-changed.md +1 -0
- package/templates/approve/session-decision-note.md +1 -0
- package/templates/approve/session-intro.md +1 -0
- package/templates/approve/session-no-decision.md +1 -0
- package/templates/approve/store-unreachable.md +1 -0
- package/templates/land/resolver.md +2 -0
- package/templates/mcp/Delete.md +6 -0
- package/templates/mcp/Edit.md +6 -5
- package/templates/mcp/Glob.md +2 -2
- package/templates/mcp/Grep.md +2 -1
- package/templates/mcp/Move.md +7 -0
- package/templates/mcp/Read.md +4 -4
- package/templates/mcp/Write.md +4 -4
- package/templates/mcp/ctxr.md +7 -0
- package/templates/mcp/ctxr_write.md +8 -0
- package/templates/mcp/server-instructions.md +11 -3
- package/templates/mcp/session_discard.md +4 -0
- package/templates/mcp/session_list.md +7 -0
- package/templates/mcp/session_rebase.md +5 -0
- package/templates/mcp/session_start.md +7 -0
- package/templates/mcp/session_status.md +3 -0
- package/templates/mcp/session_submit.md +8 -0
- package/templates/plugin/README.md +13 -0
- package/templates/plugin/chatgpt-mcp.json +19 -0
- package/templates/plugin/chatgpt-plugin.json +13 -0
- package/templates/plugin/claude-mcp.json +8 -0
- package/templates/plugin/claude-plugin.json +6 -0
- package/templates/plugin/page.html +47 -0
- package/templates/second-opinion/poll-answer.md +7 -0
- package/templates/second-opinion/taste-panel.md +14 -0
- package/templates/session/pages/bare-route.md +2 -0
- package/templates/session/pages/block.md +8 -0
- package/templates/session/pages/condition-preview.md +1 -0
- package/templates/session/pages/condition.md +1 -0
- package/templates/session/pages/moved.md +1 -0
- package/templates/session/pages/stops-working.md +1 -0
- package/templates/session/pages/table-head-preview.md +2 -0
- package/templates/session/pages/table-head.md +2 -0
- package/templates/skills/ctxr-connection-finding.md +4 -1
- package/templates/skills/ctxr-land.md +26 -7
- package/templates/skills/ctxr-placement.md +10 -0
- package/templates/skills/ctxr-publish.md +2 -1
- package/templates/skills/ctxr-rollup.md +3 -0
- package/templates/skills/ctxr-second-opinion.md +52 -36
- package/templates/skills/ctxr-session-lifecycle.md +60 -33
- package/templates/skills/ctxr-submit.md +65 -56
- package/templates/skills/mcp/_preamble.md +44 -0
- package/dist/core/mcp/drafts.d.ts +0 -30
- package/dist/core/mcp/drafts.d.ts.map +0 -1
- package/dist/core/mcp/drafts.js +0 -52
- package/dist/core/mcp/drafts.js.map +0 -1
- package/templates/skills/ctxr-second-opinion/run.mjs +0 -542
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/critic-contract.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/lenses.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/personas/architect.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/personas/pragmatist.md +0 -0
- /package/templates/{skills/ctxr-second-opinion → second-opinion}/personas/skeptic.md +0 -0
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { mkdir, readFile,
|
|
1
|
+
import { lstat, mkdir, readFile, realpath, rename, unlink, writeFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { readConfig } from '../../../config/load.js';
|
|
4
|
-
import { MIGRATION_STEPS } from '../../../config/migrations.js';
|
|
5
|
-
import { buildCatalog } from '../../catalog/build.js';
|
|
6
3
|
import { InvalidNoteFrontmatterError } from '../../errors.js';
|
|
7
4
|
import { admitsNotePath } from '../../notes/list.js';
|
|
8
5
|
import { parseNoteText } from '../../notes/parse.js';
|
|
9
|
-
import {
|
|
6
|
+
import { rebaseInProgress } from '../../session/resolve.js';
|
|
10
7
|
import { ToolRefusal } from '../jsonrpc.js';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
8
|
+
import { locatePath, memberSessions, noSessionRefusal, repoPrefixOf } from '../member-sessions.js';
|
|
9
|
+
import { normalizeStorePath, protectedReason, protectedRefusal } from '../paths.js';
|
|
10
|
+
const PATH_HINT = 'under the session root session_start returned, e.g. "<root>projects/kestrel.md"';
|
|
13
11
|
export const EDIT_INPUT_SCHEMA = {
|
|
14
12
|
type: 'object',
|
|
15
13
|
properties: {
|
|
16
|
-
file_path: { type: 'string', description:
|
|
14
|
+
file_path: { type: 'string', description: `The file to modify, ${PATH_HINT}.` },
|
|
17
15
|
old_string: { type: 'string', description: 'The text to replace' },
|
|
18
16
|
new_string: { type: 'string', description: 'The text to replace it with (must be different from old_string)' },
|
|
19
17
|
replace_all: { type: 'boolean', description: 'Replace all occurrences of old_string (default false)' },
|
|
@@ -23,16 +21,37 @@ export const EDIT_INPUT_SCHEMA = {
|
|
|
23
21
|
export const WRITE_INPUT_SCHEMA = {
|
|
24
22
|
type: 'object',
|
|
25
23
|
properties: {
|
|
26
|
-
file_path: { type: 'string', description:
|
|
27
|
-
content: { type: 'string', description: 'The content to write to the
|
|
24
|
+
file_path: { type: 'string', description: `The new file to create, ${PATH_HINT}.` },
|
|
25
|
+
content: { type: 'string', description: 'The content to write to the file' },
|
|
28
26
|
},
|
|
29
27
|
required: ['file_path', 'content'],
|
|
30
28
|
};
|
|
31
|
-
const
|
|
29
|
+
export const MOVE_INPUT_SCHEMA = {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
source_path: { type: 'string', description: `The file to move, ${PATH_HINT}.` },
|
|
33
|
+
destination_path: { type: 'string', description: 'Where it goes, under the same session root. Must not exist yet.' },
|
|
34
|
+
},
|
|
35
|
+
required: ['source_path', 'destination_path'],
|
|
36
|
+
};
|
|
37
|
+
export const DELETE_INPUT_SCHEMA = {
|
|
38
|
+
type: 'object',
|
|
39
|
+
properties: {
|
|
40
|
+
file_path: { type: 'string', description: `The file to delete, ${PATH_HINT}.` },
|
|
41
|
+
},
|
|
42
|
+
required: ['file_path'],
|
|
43
|
+
};
|
|
44
|
+
/** D5: `Edit` and `Write` stay text only, with this cap. */
|
|
45
|
+
export const MAX_CONTENT_BYTES = 256 * 1024;
|
|
46
|
+
const invalid = (message) => new ToolRefusal('mcp.invalid_arguments', message);
|
|
47
|
+
function requiredPath(args, key) {
|
|
48
|
+
const value = args[key];
|
|
49
|
+
if (typeof value !== 'string' || value.trim() === '')
|
|
50
|
+
throw invalid(`"${key}" is required.`);
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
32
53
|
export function parseEditArgs(args) {
|
|
33
|
-
const
|
|
34
|
-
if (typeof args.file_path !== 'string' || args.file_path.trim() === '')
|
|
35
|
-
throw invalid('"file_path" is required.');
|
|
54
|
+
const file_path = requiredPath(args, 'file_path');
|
|
36
55
|
if (typeof args.old_string !== 'string' || args.old_string === '')
|
|
37
56
|
throw invalid('"old_string" is required and cannot be empty.');
|
|
38
57
|
if (typeof args.new_string !== 'string')
|
|
@@ -41,172 +60,182 @@ export function parseEditArgs(args) {
|
|
|
41
60
|
throw invalid('"new_string" must be different from "old_string".');
|
|
42
61
|
if (args.replace_all !== undefined && args.replace_all !== null && typeof args.replace_all !== 'boolean')
|
|
43
62
|
throw invalid('"replace_all" must be true or false.');
|
|
44
|
-
return { file_path
|
|
63
|
+
return { file_path, old_string: args.old_string, new_string: args.new_string, replace_all: args.replace_all === true };
|
|
45
64
|
}
|
|
46
65
|
export function parseWriteArgs(args) {
|
|
47
|
-
const
|
|
48
|
-
if (typeof args.file_path !== 'string' || args.file_path.trim() === '')
|
|
49
|
-
throw invalid('"file_path" is required.');
|
|
66
|
+
const file_path = requiredPath(args, 'file_path');
|
|
50
67
|
if (typeof args.content !== 'string' || args.content.trim() === '')
|
|
51
68
|
throw invalid('"content" is required.');
|
|
52
69
|
if (Buffer.byteLength(args.content, 'utf8') > MAX_CONTENT_BYTES)
|
|
53
70
|
throw invalid(`"content" is at most ${MAX_CONTENT_BYTES} bytes.`);
|
|
54
|
-
return { file_path
|
|
71
|
+
return { file_path, content: args.content };
|
|
55
72
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const rel = resolveStorePath(input, config);
|
|
59
|
-
if (!admitsNotePath(rel, config)) {
|
|
60
|
-
throw new ToolRefusal('mcp.path_not_editable', `"${rel}" is not a note that can be edited here: only markdown notes are, never configuration, captures, the entry document or tool-owned files.`);
|
|
61
|
-
}
|
|
62
|
-
return rel;
|
|
73
|
+
export function parseMoveArgs(args) {
|
|
74
|
+
return { source_path: requiredPath(args, 'source_path'), destination_path: requiredPath(args, 'destination_path') };
|
|
63
75
|
}
|
|
64
|
-
function
|
|
65
|
-
return {
|
|
66
|
-
title: `Edits by ${email}`,
|
|
67
|
-
body: [
|
|
68
|
-
`Edits made through the store's MCP connector by ${email}.`,
|
|
69
|
-
'',
|
|
70
|
-
'Each commit is one Edit or Write. Changes made after an approval need approving again.',
|
|
71
|
-
].join('\n'),
|
|
72
|
-
};
|
|
76
|
+
export function parseDeleteArgs(args) {
|
|
77
|
+
return { file_path: requiredPath(args, 'file_path') };
|
|
73
78
|
}
|
|
74
|
-
async function
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (err.code === 'ENOENT')
|
|
80
|
-
return null;
|
|
81
|
-
throw err;
|
|
79
|
+
async function target(write, email, input) {
|
|
80
|
+
const normalized = normalizeStorePath(input);
|
|
81
|
+
const located = await locatePath(write, email, normalized);
|
|
82
|
+
if (located.kind !== 'session') {
|
|
83
|
+
throw noSessionRefusal(`"${normalized}" is not under the root of one of your sessions, so nothing was changed.`, await memberSessions(write, email));
|
|
82
84
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
if (located.rel === '')
|
|
86
|
+
throw invalid(`"${normalized}" is a session root, not a file in it.`);
|
|
87
|
+
const reason = protectedReason(located.rel, write.config);
|
|
88
|
+
if (reason !== null)
|
|
89
|
+
throw protectedRefusal(normalized, reason);
|
|
90
|
+
return { session: located.session, rel: located.rel, shown: normalized, absolute: path.join(located.session.ref.storeRoot, located.rel) };
|
|
86
91
|
}
|
|
87
92
|
/**
|
|
88
|
-
* The
|
|
89
|
-
*
|
|
90
|
-
*
|
|
93
|
+
* The nearest existing ancestor of the target, resolved, must sit inside the
|
|
94
|
+
* session's worktree, and the target itself must not be a link: a committed
|
|
95
|
+
* symlinked folder would otherwise carry a write anywhere the server can.
|
|
91
96
|
*/
|
|
92
|
-
async function
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
97
|
+
async function confined(t) {
|
|
98
|
+
const top = await realpath(t.session.ref.path);
|
|
99
|
+
let probe = path.dirname(t.absolute);
|
|
100
|
+
for (;;) {
|
|
101
|
+
const found = await realpath(probe).catch(() => null);
|
|
102
|
+
if (found !== null) {
|
|
103
|
+
if (found !== top && !found.startsWith(`${top}${path.sep}`))
|
|
104
|
+
throw new ToolRefusal('mcp.path_outside_store', `"${t.shown}" resolves outside its session.`);
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
const parent = path.dirname(probe);
|
|
108
|
+
if (parent === probe)
|
|
109
|
+
break;
|
|
110
|
+
probe = parent;
|
|
104
111
|
}
|
|
105
|
-
await
|
|
106
|
-
|
|
112
|
+
const info = await lstat(t.absolute).catch(() => null);
|
|
113
|
+
if (info?.isSymbolicLink())
|
|
114
|
+
throw new ToolRefusal('mcp.path_not_editable', `"${t.shown}" is a symbolic link, which these tools do not follow.`);
|
|
107
115
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const approval = approvalUrl(ctx.write, session);
|
|
111
|
-
return {
|
|
112
|
-
file_path: rel,
|
|
113
|
-
changed: !alreadyApplied,
|
|
114
|
-
already_applied: alreadyApplied,
|
|
115
|
-
commit,
|
|
116
|
-
pull_request: { number: pull.number, url: pull.url },
|
|
117
|
-
approval_url: approval,
|
|
118
|
-
message: alreadyApplied
|
|
119
|
-
? `That change is already in your draft (pull request #${pull.number}); nothing new was committed.`
|
|
120
|
-
: `Saved to your draft, pull request #${pull.number}. It lands once someone approves it at ${approval}.`,
|
|
121
|
-
};
|
|
116
|
+
function rebaseRefusal(session, what) {
|
|
117
|
+
return new ToolRefusal('mcp.rebase_in_progress', `A rebase is in progress in ${session.name}, so ${what}. Resolve the conflicting files with Edit, then call session_rebase with continue: true, or undo it with abort: true.`, { session: session.name });
|
|
122
118
|
}
|
|
123
|
-
/**
|
|
124
|
-
async function
|
|
125
|
-
await
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
// Decide against what the member is editing: the draft's copy when there is a draft, else the served commit.
|
|
132
|
-
const basis = { current: session === null ? fromView : await existing(path.join(session.path, repoPath)) };
|
|
133
|
-
if (session !== null) {
|
|
134
|
-
const subject = (await ctx.write.git.run(['log', '-1', '--format=%s'], { cwd: session.path, allowFailure: true })).stdout.trim();
|
|
135
|
-
if (subject === `${verb} ${rel}`) {
|
|
136
|
-
const parent = await ctx.write.git.run(['show', `HEAD~1:${repoPath}`], { cwd: session.path, allowFailure: true });
|
|
137
|
-
basis.beforeTip = parent.exitCode === 0 ? parent.stdout : null;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
const outcome = compute(basis);
|
|
141
|
-
if ('alreadyApplied' in outcome) {
|
|
142
|
-
const tip = (await ctx.write.git.run(['rev-parse', 'HEAD'], { cwd: session.path })).stdout.trim();
|
|
143
|
-
return finish(ctx, email, session, rel, tip, true);
|
|
119
|
+
/** D2 risks: during a rebase only `Edit` and `Write` on a conflicting path go through. */
|
|
120
|
+
async function checkRebase(write, t, allowConflicting) {
|
|
121
|
+
if (!(await rebaseInProgress(write.git, t.session.ref.path)))
|
|
122
|
+
return;
|
|
123
|
+
if (allowConflicting) {
|
|
124
|
+
const conflicted = (await write.git.run(['diff', '--name-only', '--diff-filter=U', '-z'], { cwd: t.session.ref.path, allowFailure: true })).stdout.split('\0');
|
|
125
|
+
if (conflicted.includes(`${await repoPrefixOf(write)}${t.rel}`))
|
|
126
|
+
return;
|
|
144
127
|
}
|
|
128
|
+
throw rebaseRefusal(t.session, `"${t.shown}" cannot be changed until it finishes`);
|
|
129
|
+
}
|
|
130
|
+
/** D5: a path the note enumeration admits must still parse as a note; templates, the log and other files are not notes. */
|
|
131
|
+
function checkNote(write, t, text) {
|
|
132
|
+
if (!admitsNotePath(t.rel, write.config))
|
|
133
|
+
return;
|
|
145
134
|
try {
|
|
146
|
-
parseNoteText(
|
|
135
|
+
parseNoteText(text, t.rel);
|
|
147
136
|
}
|
|
148
137
|
catch (err) {
|
|
149
138
|
const reason = err instanceof InvalidNoteFrontmatterError ? err.finding.message : err instanceof Error ? err.message : String(err);
|
|
150
|
-
throw new ToolRefusal('mcp.not_a_note', `The result would not be a valid note, so nothing was
|
|
151
|
-
}
|
|
152
|
-
session ??= await startSession(ctx.write, draftLabel(email));
|
|
153
|
-
try {
|
|
154
|
-
const absolute = path.join(session.path, repoPath);
|
|
155
|
-
await mkdir(path.dirname(absolute), { recursive: true });
|
|
156
|
-
await writeFile(absolute, outcome.text);
|
|
157
|
-
// The catalog follows the change, as it would in an agent's session (design.md D13).
|
|
158
|
-
const draftStoreRoot = path.join(session.path, await repoPathOf(ctx.write, ''));
|
|
159
|
-
const draftConfig = await readConfig(draftStoreRoot, MIGRATION_STEPS);
|
|
160
|
-
await buildCatalog({ root: draftStoreRoot, config: draftConfig });
|
|
161
|
-
const catalogPath = await repoPathOf(ctx.write, draftConfig.catalog.path);
|
|
162
|
-
const paths = (await pathExists(path.join(session.path, catalogPath))) ? [repoPath, catalogPath] : [repoPath];
|
|
163
|
-
const commit = await commitAs(ctx.write, session, email, paths, `${verb} ${rel}`, 'Edited-by');
|
|
164
|
-
return await finish(ctx, email, session, rel, commit, false);
|
|
165
|
-
}
|
|
166
|
-
catch (err) {
|
|
167
|
-
if (fresh) {
|
|
168
|
-
const commits = (await ctx.write.git.run(['rev-list', '--count', `refs/remotes/origin/${ctx.write.config.git.default_branch}..HEAD`], { cwd: session.path, allowFailure: true })).stdout.trim();
|
|
169
|
-
if (commits === '0')
|
|
170
|
-
await removeSession(ctx.write, session);
|
|
171
|
-
}
|
|
172
|
-
throw err;
|
|
139
|
+
throw new ToolRefusal('mcp.not_a_note', `The result would not be a valid note, so nothing was changed: ${reason}`);
|
|
173
140
|
}
|
|
174
141
|
}
|
|
142
|
+
async function existing(t) {
|
|
143
|
+
const info = await lstat(t.absolute).catch(() => null);
|
|
144
|
+
if (info === null)
|
|
145
|
+
return null;
|
|
146
|
+
if (!info.isFile())
|
|
147
|
+
throw new ToolRefusal('mcp.path_not_editable', `"${t.shown}" is not a regular file.`);
|
|
148
|
+
return readFile(t.absolute, 'utf8');
|
|
149
|
+
}
|
|
150
|
+
function changed(t, verb, extra = {}) {
|
|
151
|
+
return {
|
|
152
|
+
file_path: t.shown,
|
|
153
|
+
session: t.session.name,
|
|
154
|
+
committed: false,
|
|
155
|
+
...extra,
|
|
156
|
+
message: `${verb} in your session ${t.session.name}. Nothing is committed or published until you call session_submit.`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
175
159
|
function replace(text, args) {
|
|
176
160
|
return args.replace_all === true ? text.split(args.old_string).join(args.new_string) : text.replace(args.old_string, () => args.new_string);
|
|
177
161
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
162
|
+
/** Under the write mutex. */
|
|
163
|
+
export async function editTool(write, email, args) {
|
|
164
|
+
const t = await target(write, email, args.file_path);
|
|
165
|
+
await checkRebase(write, t, true);
|
|
166
|
+
await confined(t);
|
|
167
|
+
const current = await existing(t);
|
|
168
|
+
if (current === null)
|
|
169
|
+
throw new ToolRefusal('mcp.file_not_found', `"${t.shown}" does not exist. Use Write to create a new file.`);
|
|
170
|
+
const count = current.split(args.old_string).length - 1;
|
|
171
|
+
if (count === 0)
|
|
172
|
+
throw new ToolRefusal('mcp.edit_failed', `old_string was not found in "${t.shown}". Read the file again and copy the text exactly.`);
|
|
173
|
+
if (count > 1 && args.replace_all !== true) {
|
|
174
|
+
throw new ToolRefusal('mcp.edit_failed', `old_string occurs ${count} times in "${t.shown}". Include more surrounding text to make it unique, or set replace_all.`, { occurrences: count });
|
|
175
|
+
}
|
|
176
|
+
const text = replace(current, args);
|
|
177
|
+
if (Buffer.byteLength(text, 'utf8') > MAX_CONTENT_BYTES)
|
|
178
|
+
throw invalid(`The result would be over ${MAX_CONTENT_BYTES} bytes; nothing was changed.`);
|
|
179
|
+
checkNote(write, t, text);
|
|
180
|
+
await writeFile(t.absolute, text);
|
|
181
|
+
return changed(t, `Edited "${t.shown}"`);
|
|
182
|
+
}
|
|
183
|
+
/** Under the write mutex. Never overwrites. */
|
|
184
|
+
export async function writeTool(write, email, args) {
|
|
185
|
+
const t = await target(write, email, args.file_path);
|
|
186
|
+
await checkRebase(write, t, true);
|
|
187
|
+
await confined(t);
|
|
188
|
+
if ((await lstat(t.absolute).catch(() => null)) !== null) {
|
|
189
|
+
throw new ToolRefusal('mcp.file_exists', `"${t.shown}" already exists. Write only creates new files; use Edit to change it.`);
|
|
202
190
|
}
|
|
203
191
|
const text = args.content.endsWith('\n') ? args.content : `${args.content}\n`;
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
});
|
|
192
|
+
checkNote(write, t, text);
|
|
193
|
+
await mkdir(path.dirname(t.absolute), { recursive: true });
|
|
194
|
+
await writeFile(t.absolute, text, { flag: 'wx' });
|
|
195
|
+
return changed(t, `Created "${t.shown}"`);
|
|
196
|
+
}
|
|
197
|
+
async function tracked(write, t) {
|
|
198
|
+
return (await write.git.run(['ls-files', '--error-unmatch', '--', t.absolute], { cwd: t.session.ref.path, allowFailure: true })).exitCode === 0;
|
|
199
|
+
}
|
|
200
|
+
/** Under the write mutex. A tracked file moves as `git mv` moves it, so the session shows a rename. */
|
|
201
|
+
export async function moveTool(write, email, args) {
|
|
202
|
+
const from = await target(write, email, args.source_path);
|
|
203
|
+
const to = await target(write, email, args.destination_path);
|
|
204
|
+
if (from.session.name !== to.session.name)
|
|
205
|
+
throw invalid('"source_path" and "destination_path" must be under the same session root.');
|
|
206
|
+
await checkRebase(write, from, false);
|
|
207
|
+
await confined(from);
|
|
208
|
+
await confined(to);
|
|
209
|
+
if ((await existing(from)) === null)
|
|
210
|
+
throw new ToolRefusal('mcp.file_not_found', `"${from.shown}" does not exist.`);
|
|
211
|
+
if ((await lstat(to.absolute).catch(() => null)) !== null)
|
|
212
|
+
throw new ToolRefusal('mcp.file_exists', `"${to.shown}" already exists; Move never overwrites.`);
|
|
213
|
+
await mkdir(path.dirname(to.absolute), { recursive: true });
|
|
214
|
+
if (await tracked(write, from)) {
|
|
215
|
+
const moved = await write.git.run(['mv', '--', from.absolute, to.absolute], { cwd: from.session.ref.path, allowFailure: true });
|
|
216
|
+
if (moved.exitCode !== 0)
|
|
217
|
+
throw new ToolRefusal('mcp.move_failed', `"${from.shown}" could not be moved: ${moved.stderr.trim()}`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
await rename(from.absolute, to.absolute);
|
|
221
|
+
}
|
|
222
|
+
return changed(from, `Moved "${from.shown}" to "${to.shown}"`, { destination_path: to.shown });
|
|
223
|
+
}
|
|
224
|
+
/** Under the write mutex. Destructive: the working-tree copy is gone, though a committed version stays in history. */
|
|
225
|
+
export async function deleteTool(write, email, args) {
|
|
226
|
+
const t = await target(write, email, args.file_path);
|
|
227
|
+
await checkRebase(write, t, false);
|
|
228
|
+
await confined(t);
|
|
229
|
+
if ((await existing(t)) === null)
|
|
230
|
+
throw new ToolRefusal('mcp.file_not_found', `"${t.shown}" does not exist.`);
|
|
231
|
+
if (await tracked(write, t)) {
|
|
232
|
+
const removed = await write.git.run(['rm', '-q', '-f', '--', t.absolute], { cwd: t.session.ref.path, allowFailure: true });
|
|
233
|
+
if (removed.exitCode !== 0)
|
|
234
|
+
throw new ToolRefusal('mcp.delete_failed', `"${t.shown}" could not be deleted: ${removed.stderr.trim()}`);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
await unlink(t.absolute);
|
|
238
|
+
}
|
|
239
|
+
return changed(t, `Deleted "${t.shown}"`);
|
|
211
240
|
}
|
|
212
241
|
//# sourceMappingURL=edit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAgC,MAAM,gBAAgB,CAAC;AAEvI,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuB9C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6EAA6E,EAAE;QACzH,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;QAClE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAE;QAC9G,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;KACvG;IACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;CAC3C,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wFAAwF,EAAE;QACpI,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;KAC7E;IACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEX,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,CAAC;AAErC,MAAM,UAAU,aAAa,CAAC,IAA6B;IACzD,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACvF,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClH,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE;QAAE,MAAM,OAAO,CAAC,+CAA+C,CAAC,CAAC;IAClI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QAAE,MAAM,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACpF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;QAAE,MAAM,OAAO,CAAC,mDAAmD,CAAC,CAAC;IAC5G,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,MAAM,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAChK,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;AACzI,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA6B;IAC1D,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACvF,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClH,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5G,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,iBAAiB;QAAE,MAAM,OAAO,CAAC,wBAAwB,iBAAiB,SAAS,CAAC,CAAC;IACnI,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC;AAmBD,wIAAwI;AACxI,SAAS,YAAY,CAAC,KAAa,EAAE,MAA0B;IAC7D,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,WAAW,CAAC,uBAAuB,EAAE,IAAI,GAAG,0IAA0I,CAAC,CAAC;IACpM,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO;QACL,KAAK,EAAE,YAAY,KAAK,EAAE;QAC1B,IAAI,EAAE;YACJ,mDAAmD,KAAK,GAAG;YAC3D,EAAE;YACF,wFAAwF;SACzF,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAAC,GAAiB,EAAE,KAAa;IAC1D,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,uBAAuB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjD,MAAM,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,GAAiB,EAAE,KAAa,EAAE,OAAgB,EAAE,GAAW,EAAE,MAAc,EAAE,cAAuB;IAC5H,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO;QACL,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,CAAC,cAAc;QACxB,eAAe,EAAE,cAAc;QAC/B,MAAM;QACN,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QACpD,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,cAAc;YACrB,CAAC,CAAC,uDAAuD,IAAI,CAAC,MAAM,+BAA+B;YACnG,CAAC,CAAC,sCAAsC,IAAI,CAAC,MAAM,0CAA0C,QAAQ,GAAG;KAC3G,CAAC;AACJ,CAAC;AASD,oJAAoJ;AACpJ,KAAK,UAAU,YAAY,CAAC,GAAiB,EAAE,KAAa,EAAE,GAAW,EAAE,IAAsB,EAAE,OAAsE;IACvK,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,+FAA+F;IAC/F,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/I,IAAI,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAElD,6GAA6G;IAC7G,MAAM,KAAK,GAAU,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;IAClH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjI,IAAI,OAAO,KAAK,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAClH,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,gBAAgB,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,OAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnG,OAAO,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC;QACH,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnI,MAAM,IAAI,WAAW,CAAC,gBAAgB,EAAE,+DAA+D,MAAM,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,OAAO,KAAK,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,qFAAqF;QACrF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QACtE,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9G,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/F,OAAO,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,uBAAuB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChM,IAAI,OAAO,KAAK,GAAG;gBAAE,MAAM,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,IAAc;IAC3C,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9I,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAiB,EAAE,KAAa,EAAE,IAAc;IAC7E,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QACtE,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,IAAI,GAAG,mDAAmD,CAAC,CAAC;QAC9H,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,6GAA6G;YAC7G,6EAA6E;YAC7E,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,OAAO;gBAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;YAClJ,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,gCAAgC,GAAG,mDAAmD,CAAC,CAAC;QACnI,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,qBAAqB,KAAK,cAAc,GAAG,yEAAyE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACzL,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAiB,EAAE,KAAa,EAAE,IAAe;IAC/E,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7I,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,IAAI,GAAG,wEAAwE,CAAC,CAAC;IAC5H,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC;IAC9E,OAAO,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;QACvE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtC,IAAI,OAAO,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAC5E,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,IAAI,GAAG,sFAAsF,CAAC,CAAC;IAC1I,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../src/core/mcp/tools/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { StoreConfig } from '../../../config/schema.js';
|
|
2
|
+
import { type MemberSession } from '../member-sessions.js';
|
|
2
3
|
import { type GrepParams } from '../ripgrep.js';
|
|
3
4
|
import type { WriteDeps } from '../sessions.js';
|
|
4
|
-
import type {
|
|
5
|
+
import type { McpView, SyncDeps } from '../sync.js';
|
|
5
6
|
/**
|
|
6
7
|
* serve-the-store-over-mcp design.md D12 (remote-access spec, *`Read`,
|
|
7
8
|
* `Grep` and `Glob` give file-shaped access with Claude Code's parameters*):
|
|
@@ -9,14 +10,35 @@ import type { Snapshot } from '../sync.js';
|
|
|
9
10
|
* commit being served. Paths are store-relative (a leading `/` names the
|
|
10
11
|
* store root). What these tools may never read or return is one list, used
|
|
11
12
|
* both to refuse a named path and as ripgrep's exclusions.
|
|
13
|
+
*
|
|
14
|
+
* serve-the-session-lifecycle-to-chat-apps D1, D5 (remote-access spec,
|
|
15
|
+
* *`Read`, `Grep` and `Glob` read the served commit or a member's own
|
|
16
|
+
* session*): a path under the root of one of the caller's sessions reads that
|
|
17
|
+
* session's working tree, uncommitted work included; any other path reads the
|
|
18
|
+
* served commit. The readable set widens to the templates, house conventions,
|
|
19
|
+
* log and skills the owned skills read (`paths.ts`).
|
|
12
20
|
*/
|
|
13
21
|
export declare const READ_DEFAULT_LIMIT = 2000;
|
|
14
|
-
|
|
15
|
-
export declare function hiddenPrefixes(config: StoreConfig): string[];
|
|
22
|
+
export { readablePath } from '../paths.js';
|
|
16
23
|
/** A caller's path as a store-relative one; refused when it leaves the store or is hidden. `''` is the store root. */
|
|
17
24
|
export declare function resolveStorePath(input: string, config: StoreConfig): string;
|
|
18
|
-
/**
|
|
19
|
-
export
|
|
25
|
+
/** Where a read is answered from: the served commit's view, or one of the caller's sessions. */
|
|
26
|
+
export type ReadTarget = {
|
|
27
|
+
kind: 'view';
|
|
28
|
+
rel: string;
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'session';
|
|
31
|
+
session: MemberSession;
|
|
32
|
+
rel: string;
|
|
33
|
+
};
|
|
34
|
+
/** The read target for a caller's path; a path under another member's (or no) session is hidden like the worktrees path. */
|
|
35
|
+
export declare function readTarget(write: WriteDeps, email: string, input: string, config: StoreConfig): Promise<ReadTarget>;
|
|
36
|
+
/** What the file tools need for a read: the view, and the write side that knows the caller's sessions. */
|
|
37
|
+
export interface FileContext {
|
|
38
|
+
view: McpView;
|
|
39
|
+
syncDeps: SyncDeps;
|
|
40
|
+
write: WriteDeps;
|
|
41
|
+
}
|
|
20
42
|
export interface ReadArgs {
|
|
21
43
|
file_path: string;
|
|
22
44
|
offset?: number;
|
|
@@ -48,12 +70,13 @@ export interface ReadResult {
|
|
|
48
70
|
total_lines: number;
|
|
49
71
|
first_line: number;
|
|
50
72
|
last_line: number;
|
|
51
|
-
|
|
73
|
+
/** The session whose working tree was read; null for the served commit. */
|
|
74
|
+
session: string | null;
|
|
52
75
|
capture: boolean;
|
|
53
|
-
/** The note's page on the browsing surface, for citing; null for a capture or
|
|
76
|
+
/** The note's page on the browsing surface, for citing; null for a capture, a session's copy, or anything not a note. */
|
|
54
77
|
url: string | null;
|
|
55
78
|
}
|
|
56
|
-
export declare function readTool(
|
|
79
|
+
export declare function readTool(ctx: FileContext, email: string, args: ReadArgs): Promise<ReadResult>;
|
|
57
80
|
export declare function renderRead(data: unknown): string;
|
|
58
81
|
export interface GrepArgs extends GrepParams {
|
|
59
82
|
head_limit?: number;
|
|
@@ -127,14 +150,16 @@ export interface GrepResult {
|
|
|
127
150
|
output_mode: string;
|
|
128
151
|
lines: string[];
|
|
129
152
|
omitted: number;
|
|
130
|
-
/**
|
|
153
|
+
/** The session searched; null for the served commit. */
|
|
154
|
+
session: string | null;
|
|
155
|
+
/** Inbox files on session branches with an open pull request that match: captures awaiting approval. Served commit only. */
|
|
131
156
|
awaiting_approval: {
|
|
132
157
|
path: string;
|
|
133
158
|
branch: string;
|
|
134
159
|
lines: string[];
|
|
135
160
|
}[];
|
|
136
161
|
}
|
|
137
|
-
export declare function grepTool(
|
|
162
|
+
export declare function grepTool(ctx: FileContext, email: string, args: GrepArgs): Promise<GrepResult>;
|
|
138
163
|
export declare function renderGrep(data: unknown): string;
|
|
139
164
|
export interface GlobArgs {
|
|
140
165
|
pattern: string;
|
|
@@ -155,9 +180,10 @@ export declare const GLOB_INPUT_SCHEMA: {
|
|
|
155
180
|
readonly required: readonly ['pattern'];
|
|
156
181
|
};
|
|
157
182
|
export declare function parseGlobArgs(args: Record<string, unknown>): GlobArgs;
|
|
158
|
-
export declare function globTool(
|
|
183
|
+
export declare function globTool(ctx: FileContext, email: string, args: GlobArgs): Promise<{
|
|
159
184
|
files: string[];
|
|
160
185
|
omitted: number;
|
|
186
|
+
session: string | null;
|
|
161
187
|
}>;
|
|
162
188
|
export declare function renderGlob(data: unknown): string;
|
|
163
189
|
//# sourceMappingURL=files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../src/core/mcp/tools/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../src/core/mcp/tools/files.ts"],"names":[],"mappings":"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"}
|