ctxr-cli 0.36.0 → 0.38.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/LICENSE +21 -201
- package/README.md +28 -12
- package/dist/commands/land.d.ts +5 -0
- package/dist/commands/land.d.ts.map +1 -1
- package/dist/commands/land.js +12 -3
- package/dist/commands/land.js.map +1 -1
- package/dist/commands/plugin-build.d.ts +21 -11
- package/dist/commands/plugin-build.d.ts.map +1 -1
- package/dist/commands/plugin-build.js +45 -24
- package/dist/commands/plugin-build.js.map +1 -1
- package/dist/commands/review-list.d.ts +5 -1
- package/dist/commands/review-list.d.ts.map +1 -1
- package/dist/commands/review-list.js +2 -2
- package/dist/commands/review-list.js.map +1 -1
- package/dist/commands/second-opinion.d.ts +6 -2
- package/dist/commands/second-opinion.d.ts.map +1 -1
- package/dist/commands/second-opinion.js.map +1 -1
- package/dist/commands/serve.d.ts +2 -0
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +1 -1
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/session-list.d.ts +2 -0
- package/dist/commands/session-list.d.ts.map +1 -1
- package/dist/commands/session-list.js +1 -1
- package/dist/commands/session-list.js.map +1 -1
- package/dist/commands/session-start.d.ts.map +1 -1
- package/dist/commands/session-start.js +2 -1
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/session-submit.d.ts +9 -1
- package/dist/commands/session-submit.d.ts.map +1 -1
- package/dist/commands/session-submit.js +1 -1
- package/dist/commands/session-submit.js.map +1 -1
- package/dist/commands/shared-stores-status.d.ts +9 -1
- package/dist/commands/shared-stores-status.d.ts.map +1 -1
- package/dist/commands/shared-stores-status.js +13 -7
- package/dist/commands/shared-stores-status.js.map +1 -1
- package/dist/commands/shared-stores-sync.d.ts +13 -0
- package/dist/commands/shared-stores-sync.d.ts.map +1 -1
- package/dist/commands/shared-stores-sync.js +60 -13
- package/dist/commands/shared-stores-sync.js.map +1 -1
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +9 -7
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +8 -5
- package/dist/commands/update.js.map +1 -1
- package/dist/core/approval/session-group.d.ts +10 -1
- package/dist/core/approval/session-group.d.ts.map +1 -1
- package/dist/core/approval/session-group.js +4 -0
- package/dist/core/approval/session-group.js.map +1 -1
- package/dist/core/command.d.ts +5 -3
- package/dist/core/command.d.ts.map +1 -1
- package/dist/core/errors.d.ts +9 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +11 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/forge/credentials.d.ts +23 -3
- package/dist/core/forge/credentials.d.ts.map +1 -1
- package/dist/core/forge/credentials.js +99 -5
- package/dist/core/forge/credentials.js.map +1 -1
- package/dist/core/forge/github.d.ts +2 -0
- package/dist/core/forge/github.d.ts.map +1 -1
- package/dist/core/forge/github.js +1 -0
- package/dist/core/forge/github.js.map +1 -1
- package/dist/core/git/worktree.d.ts +6 -1
- package/dist/core/git/worktree.d.ts.map +1 -1
- package/dist/core/git/worktree.js +7 -2
- package/dist/core/git/worktree.js.map +1 -1
- package/dist/core/mcp/surface.js +1 -1
- package/dist/core/mcp/surface.js.map +1 -1
- package/dist/core/mcp/sync.d.ts +4 -1
- package/dist/core/mcp/sync.d.ts.map +1 -1
- package/dist/core/mcp/sync.js +6 -5
- package/dist/core/mcp/sync.js.map +1 -1
- package/dist/core/mcp/tool-map.d.ts +25 -12
- package/dist/core/mcp/tool-map.d.ts.map +1 -1
- package/dist/core/mcp/tool-map.js +28 -11
- package/dist/core/mcp/tool-map.js.map +1 -1
- package/dist/core/mcp/tools/cli.d.ts +6 -0
- package/dist/core/mcp/tools/cli.d.ts.map +1 -1
- package/dist/core/mcp/tools/cli.js +77 -4
- package/dist/core/mcp/tools/cli.js.map +1 -1
- package/dist/core/mcp/tools/gather.d.ts.map +1 -1
- package/dist/core/mcp/tools/gather.js +5 -4
- package/dist/core/mcp/tools/gather.js.map +1 -1
- package/dist/core/mcp/tools/index.d.ts +11 -1
- package/dist/core/mcp/tools/index.d.ts.map +1 -1
- package/dist/core/mcp/tools/index.js +21 -4
- package/dist/core/mcp/tools/index.js.map +1 -1
- package/dist/core/plugin/build.d.ts +53 -26
- package/dist/core/plugin/build.d.ts.map +1 -1
- package/dist/core/plugin/build.js +153 -50
- package/dist/core/plugin/build.js.map +1 -1
- package/dist/core/plugin/commands.d.ts +11 -0
- package/dist/core/plugin/commands.d.ts.map +1 -0
- package/dist/core/plugin/commands.js +25 -0
- package/dist/core/plugin/commands.js.map +1 -0
- package/dist/core/plugin/routes.d.ts +11 -7
- package/dist/core/plugin/routes.d.ts.map +1 -1
- package/dist/core/plugin/routes.js +27 -24
- package/dist/core/plugin/routes.js.map +1 -1
- package/dist/core/second-opinion/confine.d.ts +50 -0
- package/dist/core/second-opinion/confine.d.ts.map +1 -0
- package/dist/core/second-opinion/confine.js +162 -0
- package/dist/core/second-opinion/confine.js.map +1 -0
- package/dist/core/second-opinion/launch.d.ts +6 -1
- package/dist/core/second-opinion/launch.d.ts.map +1 -1
- package/dist/core/second-opinion/launch.js +31 -3
- package/dist/core/second-opinion/launch.js.map +1 -1
- package/dist/core/second-opinion/lineup.d.ts +11 -0
- package/dist/core/second-opinion/lineup.d.ts.map +1 -1
- package/dist/core/second-opinion/lineup.js +15 -0
- package/dist/core/second-opinion/lineup.js.map +1 -1
- package/dist/core/second-opinion/modes.d.ts +19 -2
- package/dist/core/second-opinion/modes.d.ts.map +1 -1
- package/dist/core/second-opinion/modes.js +103 -29
- package/dist/core/second-opinion/modes.js.map +1 -1
- package/dist/core/session/start.d.ts +2 -2
- package/dist/core/session/submit.d.ts.map +1 -1
- package/dist/core/session/submit.js +6 -3
- package/dist/core/session/submit.js.map +1 -1
- package/dist/core/shared-stores.d.ts +5 -0
- package/dist/core/shared-stores.d.ts.map +1 -1
- package/dist/core/shared-stores.js +10 -0
- package/dist/core/shared-stores.js.map +1 -1
- package/dist/core/skill-placeholders.d.ts +51 -0
- package/dist/core/skill-placeholders.d.ts.map +1 -0
- package/dist/core/skill-placeholders.js +55 -0
- package/dist/core/skill-placeholders.js.map +1 -0
- package/dist/core/skills.d.ts +38 -14
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +81 -91
- package/dist/core/skills.js.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +29 -7
- package/dist/run.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
- package/templates/mcp/ctxr.md +1 -0
- package/templates/mcp/server-instructions.md +16 -0
- package/templates/plugin/README.md +30 -8
- package/templates/plugin/chatgpt-README.md +16 -0
- package/templates/plugin/claude-plugin.json +9 -1
- package/templates/plugin/command.md +7 -0
- package/templates/plugin/page.html +19 -8
- package/templates/second-opinion/critic-contract.md +2 -1
- package/templates/skills/_surfaces.md +30 -0
- package/templates/skills/ctxr-placement.md +1 -1
- package/templates/skills/ctxr-second-opinion.md +34 -13
- package/templates/skills/ctxr-session-lifecycle.md +6 -5
- package/templates/skills/mcp/_layer-step.md +18 -0
- package/templates/skills/mcp/_relation-grouping-step.md +5 -0
- package/templates/plugin/claude-mcp.json +0 -8
- package/templates/skills/mcp/_preamble.md +0 -44
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Get an independent read from models built by different labs before you commit to something you cannot
|
|
2
2
|
cheaply take back, or when your own taste is one vote among several. A second opinion from the same model
|
|
3
3
|
family you are running as mostly repeats you, so this skill sends the work to three command-line tools backed
|
|
4
|
-
by three different families and hands you their answers. `ctxr second-opinion`
|
|
5
|
-
the tools,
|
|
6
|
-
never
|
|
4
|
+
by three different families and hands you their answers. `ctxr second-opinion critique` and its `poll`
|
|
5
|
+
sibling do the mechanics: they launch the tools, contain them, time them out, and anonymize what comes
|
|
6
|
+
back. They do not decide anything, and they never carry out what they review. Weighing the answers is your job, and steps 4 and 5 are how.
|
|
7
7
|
|
|
8
8
|
## 1. Critique, poll, or just answer?
|
|
9
9
|
|
|
@@ -41,18 +41,27 @@ The preflight pings each tool with that tier's model and names the model it test
|
|
|
41
41
|
longer offers fails only at the tier that uses it.
|
|
42
42
|
|
|
43
43
|
If one is down, stop and give the operator the two real choices: sign that tool in and re-run, or continue
|
|
44
|
-
with the others by rerunning `ctxr second-opinion` with `--only` and naming them. Do not quietly run with one
|
|
44
|
+
with the others by rerunning `ctxr second-opinion critique` with `--only` and naming them. Do not quietly run with one
|
|
45
45
|
model. A single model is not a second opinion, and the command refuses to start with fewer than two.
|
|
46
46
|
|
|
47
47
|
Failure signatures: `Not logged in` means Claude needs `/login`; a `401` or an invalid refresh token from
|
|
48
48
|
Codex means `codex login`; an agy call that hangs usually means its sign-in expired and it needs one
|
|
49
49
|
interactive run.
|
|
50
50
|
|
|
51
|
+
Through the store's server, the operator signs the tools in on the server. Tell the person which tool is
|
|
52
|
+
down. Ask them to pass that on to the operator.
|
|
53
|
+
|
|
54
|
+
Each tool runs in a new folder that is its home and holds only its own login. Where the machine supports it,
|
|
55
|
+
the kernel also stops the tool from reading anything outside that folder, and the preflight reports
|
|
56
|
+
`confined: yes`. Why: a plan can carry instructions from whoever wrote it, and a tool that cannot read a
|
|
57
|
+
secret cannot quote it. The store's server runs a second opinion only when it is confined.
|
|
58
|
+
|
|
51
59
|
The tools see only an allowlisted environment: the search path, home, locale, proxies, and their own login
|
|
52
60
|
variables. Forge and contexture variables never reach them. When a tool fails because it needed a variable the
|
|
53
61
|
allowlist dropped, a failing `ctxr second-opinion preflight` names the variables it withheld (names, never
|
|
54
62
|
values). Name that variable in `CTXR_SECOND_OPINION_PASS_ENV` for the run. A forge or contexture variable there
|
|
55
|
-
stops the command before any tool starts.
|
|
63
|
+
stops the command before any tool starts. Through the store's server, these variables are the operator's to
|
|
64
|
+
set on the server. Ask the operator to set one. Do not try to set it from the conversation.
|
|
56
65
|
|
|
57
66
|
If the plan came from someone other than the operator, leave agy out: run `ctxr second-opinion critique` with
|
|
58
67
|
`--only claude,codex`. Claude runs with no tools at all and Codex in a read-only sandbox. Agy has no mode that
|
|
@@ -61,7 +70,8 @@ an accident and not an attack.
|
|
|
61
70
|
|
|
62
71
|
## 3. Run a critique
|
|
63
72
|
|
|
64
|
-
Write the plan
|
|
73
|
+
Write the plan down in this shape. Why: the reviewers can only cite what is written down, and they cite by
|
|
74
|
+
step number.
|
|
65
75
|
|
|
66
76
|
```
|
|
67
77
|
# Plan: <one-line goal>
|
|
@@ -81,19 +91,24 @@ S2. <step>
|
|
|
81
91
|
- Irreversible: <steps>
|
|
82
92
|
```
|
|
83
93
|
|
|
84
|
-
|
|
94
|
+
In a shell, write the plan to a file and run:
|
|
85
95
|
|
|
86
96
|
```
|
|
87
97
|
ctxr second-opinion critique --plan-file <plan> --out <dir>
|
|
88
98
|
```
|
|
89
99
|
|
|
100
|
+
Through the store's server, give the plan as `input`. Run the `ctxr` tool with `args` set to
|
|
101
|
+
`["second-opinion", "critique", "--plan-file", "@input"]`. The critiques come back in the result.
|
|
102
|
+
|
|
90
103
|
Three reviewers each read the plan alone: structure and ordering, failure modes and trust boundaries,
|
|
91
104
|
simplicity and cost. None sees another's answer. That is deliberate: reviewers who read each other converge
|
|
92
105
|
on whoever spoke first, and a correct one gets talked out of it. Do not add a second round.
|
|
93
106
|
|
|
94
107
|
The command prints the letters it wrote, whether each is valid or blind, and any reviewer that failed. It
|
|
95
108
|
never prints which model wrote which letter. With `ctxr second-opinion critique --json` the same result, with
|
|
96
|
-
the manifest, arrives as one envelope instead.
|
|
109
|
+
the manifest, arrives as one envelope instead. With `ctxr second-opinion critique --print`, the command prints
|
|
110
|
+
each critique under its letter, then the letter table, and writes no files. Through the store's server it
|
|
111
|
+
always prints. A **blind** critique returned a well-formed verdict but cited
|
|
97
112
|
nothing in the plan, so it was written without reading it; it does not count. **Partial** means fewer than
|
|
98
113
|
two valid critiques, and the command then exits with the failed-check status rather than success: say so at
|
|
99
114
|
the top of your answer and do not call anything a consensus.
|
|
@@ -112,14 +127,17 @@ default level. Measured on a short plan at the default tier, a critique took one
|
|
|
112
127
|
quicker and costs less. A deeper pass is a choice: with `CTXR_SECOND_OPINION_CLAUDE_EFFORT=max`, Claude on
|
|
113
128
|
Opus alone took over eight minutes on a short plan. That is close to the command's ten-minute limit per tool,
|
|
114
129
|
and Fable is slower than Opus; raise it with `ctxr second-opinion critique --timeout <seconds>` for such a
|
|
115
|
-
run. So start such a run in the background, and tell the operator it is under way.
|
|
130
|
+
run. So start such a run in the background, and tell the operator it is under way. Through the store's
|
|
131
|
+
server, each tool gets at most 200 seconds and the whole run four minutes. Run a deep pass in a shell.
|
|
132
|
+
Why: the chat app stops waiting for a tool after about four minutes. A machine that pins its own
|
|
116
133
|
Codex effort in its configuration is overridden by the catalog default; set `CTXR_SECOND_OPINION_CODEX_EFFORT`
|
|
117
134
|
to use another.
|
|
118
135
|
|
|
119
136
|
## 4. Synthesize on the letters first
|
|
120
137
|
|
|
121
138
|
Read the `critique-A`, `critique-B` and `critique-C` files and write your synthesis before you open
|
|
122
|
-
`manifest.json`.
|
|
139
|
+
`manifest.json`. When the critiques were printed, write your synthesis before you read the letter table
|
|
140
|
+
below them. You share a model family with one of the reviewers, and models rate their own family's
|
|
123
141
|
writing higher. Reading letters first is what keeps that from steering you. Then open the manifest and
|
|
124
142
|
attach roles and models to the letters in the final report.
|
|
125
143
|
|
|
@@ -166,12 +184,15 @@ for a typo.
|
|
|
166
184
|
|
|
167
185
|
## 6. Run a poll
|
|
168
186
|
|
|
169
|
-
Write the question and the options to a file
|
|
187
|
+
Write the question and the options down. In a shell, write them to a file and run:
|
|
170
188
|
|
|
171
189
|
```
|
|
172
190
|
ctxr second-opinion poll --prompt-file <question>
|
|
173
191
|
```
|
|
174
192
|
|
|
193
|
+
Through the store's server, give them as `input`. Run the `ctxr` tool with `args` set to
|
|
194
|
+
`["second-opinion", "poll", "--prompt-file", "@input"]`. The answers come back in the result.
|
|
195
|
+
|
|
175
196
|
The same question goes to all three models, each answering with a pick, reasons, and anything surprising.
|
|
176
197
|
This mode names its files by model, because what you are reading is whether the models agree.
|
|
177
198
|
|
|
@@ -203,6 +224,6 @@ include your own family, say so.
|
|
|
203
224
|
yourself.
|
|
204
225
|
- Model names change faster than releases. When a default is stale, set
|
|
205
226
|
`CTXR_SECOND_OPINION_CLAUDE_MODEL`, `CTXR_SECOND_OPINION_CLAUDE_EFFORT`, `CTXR_SECOND_OPINION_CODEX_MODEL`,
|
|
206
|
-
`CTXR_SECOND_OPINION_CODEX_EFFORT` or `CTXR_SECOND_OPINION_AGY_MODEL` in the environment for the run. Nothing about the lineup lives in the store's configuration.
|
|
227
|
+
`CTXR_SECOND_OPINION_CODEX_EFFORT` or `CTXR_SECOND_OPINION_AGY_MODEL` in the environment for the run. Nothing about the lineup lives in the store's configuration. Through the store's server, the operator sets them on the server.
|
|
207
228
|
- The scratch files under the output directory hold each reviewer's raw output and are safe to delete when the
|
|
208
|
-
operator has the synthesis. They can contain the plan, so do not commit them.
|
|
229
|
+
operator has the synthesis. They can contain the plan, so do not commit them. A printed run writes none.
|
|
@@ -22,10 +22,11 @@ session's worktree is gone. The name becomes a git ref and a directory, so keep
|
|
|
22
22
|
that should not be written down.
|
|
23
23
|
|
|
24
24
|
Before starting, bring the store's canonical clone up to date — the repository's main worktree, not
|
|
25
|
-
whichever checkout you are standing in.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
whichever checkout you are standing in. In a shell, run `ctxr sync`; through the store's server, skip
|
|
26
|
+
this step, because the server keeps its own clone current. It fetches `__DEFAULT_BRANCH__` and
|
|
27
|
+
fast-forwards the canonical clone, and leaves it alone when it is on another branch, carries uncommitted
|
|
28
|
+
changes, or has diverged from origin. If it reports that, report exactly that and start the session
|
|
29
|
+
anyway — never check it out, reset it, stash, or force the merge to make it comply. The
|
|
29
30
|
session's base is unaffected either way, because `ctxr session start` branches from the
|
|
30
31
|
`origin/__DEFAULT_BRANCH__` it fetches itself. What a stale clone costs is the context you read out of
|
|
31
32
|
it: notes, catalog sections, the graph document, and AGENTS.md would all be the versions it last had.
|
|
@@ -56,7 +57,7 @@ It reports each session with its open pull request and the decision made on the
|
|
|
56
57
|
|
|
57
58
|
Skip this section when the store mounts no other stores under `shared/`.
|
|
58
59
|
|
|
59
|
-
- After you bring the canonical clone up to date, run `ctxr shared-stores sync
|
|
60
|
+
- After you bring the canonical clone up to date, run `ctxr shared-stores sync` in a shell; through the store's server, skip this step, because the server keeps no mounts. It clones a missing mount and fast-forwards the others.
|
|
60
61
|
- Report a mount that sync left alone, with its reason. Do not reset, stash or force it. Why: local work in a mount is somebody's session.
|
|
61
62
|
- To write into a mount for the work of this store's session, change into `shared/<name>`. Run `ctxr session start --joins <session>` there, with this store's session name. Why: the mount's session then joins this one, and one decision covers both pull requests.
|
|
62
63
|
- The command refuses outside a mount, or for a session this store does not have. Report the refusal. Do not start a plain session instead.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## 1. Which layer?
|
|
2
|
+
|
|
3
|
+
The connector's instructions list this store's layers, each with its description, under *This store*;
|
|
4
|
+
AGENTS.md's "Placing a new note" section lists them too. Choose by what the content fundamentally IS, not by
|
|
5
|
+
surface keywords; a label on a location says nothing about what is actually kept there.
|
|
6
|
+
|
|
7
|
+
- A layer whose description names an end state, a finish line or a deadline takes only what has a finish
|
|
8
|
+
line: if it never closes, it does not belong there. An item in that layer that can never close is a smell
|
|
9
|
+
— it either clutters the layer as open-forever or gets retired prematurely. Never create one on purpose;
|
|
10
|
+
an ongoing responsibility with a standard to maintain belongs in a layer whose description says so.
|
|
11
|
+
- A layer whose description says it holds completed, abandoned or inactive items is where the other layers'
|
|
12
|
+
finished or dropped items go — never a first placement. Retire a note with `ctxr archive <path>` (a
|
|
13
|
+
tracked move; frontmatter untouched).
|
|
14
|
+
|
|
15
|
+
If the store lists no layers, there is no layer decision: place the note next to the notes it will link to
|
|
16
|
+
most (`ctxr graph query neighbors <path>` on the closest existing note shows that cluster) and let wikilinks
|
|
17
|
+
carry the structure. If no layer fits, use the catch-all location AGENTS.md names and revisit the placement
|
|
18
|
+
later.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
5. Group proposals by the relation vocabulary the connector's instructions list under *This store*, each
|
|
2
|
+
with its definition. The section headings carrying these names are what `ctxr graph build` types edges
|
|
3
|
+
from, so a link written under the right heading becomes a typed edge on the next build. Format each item
|
|
4
|
+
as `[[Note]]` — reason. Choose between two adjacent relations by their definitions, not their names, and
|
|
5
|
+
remember that an edge is recorded only on the note carrying the link.
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
## Before this skill: the store's tools stand in for a checkout
|
|
2
|
-
|
|
3
|
-
You are working through this store's server, not in a checkout of it. Nothing runs a shell here, so no
|
|
4
|
-
`git`, `gh` or `ctxr` command runs as written. The skill below was written for an agent with a checkout:
|
|
5
|
-
follow it as written, and take each step it names through the tool these tables give.
|
|
6
|
-
|
|
7
|
-
### Commands
|
|
8
|
-
|
|
9
|
-
__COMMAND_TABLE__
|
|
10
|
-
|
|
11
|
-
A command marked none has no counterpart here: skip that step and say nothing about it. Each other tool takes its command's options as fields, each named for its option without the leading
|
|
12
|
-
dashes, and the session the command names as `session`: the session worktree's directory name, which
|
|
13
|
-
`session_start` returns and `session_list` lists. `session_start` takes the session's name as `label`.
|
|
14
|
-
|
|
15
|
-
Every other `ctxr` step runs through the `ctxr` tool when the command only reads, and through `ctxr_write`
|
|
16
|
-
when it writes. Pass the words after `ctxr` as `args`, one word per entry: a step that says to run
|
|
17
|
-
`ctxr lint` is the `ctxr` tool with `args` set to `["lint"]`. Name a session as `session` to run the command
|
|
18
|
-
in that session's working tree; `ctxr_write` always needs one. When a command reads a file you prepared,
|
|
19
|
-
pass the file's text as `input` and write `@input` in `args` where its path goes.
|
|
20
|
-
|
|
21
|
-
### Git steps
|
|
22
|
-
|
|
23
|
-
__GIT_STEP_TABLE__
|
|
24
|
-
|
|
25
|
-
Commits, pushes and pull requests happen only in `session_submit`. A step marked none is the server's own
|
|
26
|
-
work: it keeps the store's clone current, and `session_start` branches from the freshly fetched default
|
|
27
|
-
branch. Skip that step and say nothing about it.
|
|
28
|
-
|
|
29
|
-
### Paths
|
|
30
|
-
|
|
31
|
-
`session_start` returns the session's root, a path such as `__WORKTREES_PATH__<directory>/`. Every path the
|
|
32
|
-
skill names is relative to the store; inside a session it goes under that root, so the note `work/a.md` in
|
|
33
|
-
that session is `__WORKTREES_PATH__<directory>/work/a.md` for `Read`, `Edit`, `Write`, `Move`, `Delete`,
|
|
34
|
-
`Grep` and `Glob`. A path without a session root reads the store as it was last approved, and a write to one
|
|
35
|
-
is refused. A change rests uncommitted in its session until `session_submit`.
|
|
36
|
-
|
|
37
|
-
### Sessions across conversations
|
|
38
|
-
|
|
39
|
-
The server keeps a session between conversations, but it cannot tell two conversations apart. At the
|
|
40
|
-
start of a conversation, call `session_list` and mention each open session: what it holds uncommitted,
|
|
41
|
-
and any requested changes on its pull request. Work in the session the person names, or start one.
|
|
42
|
-
|
|
43
|
-
Where the skill hands off to a skill this environment does not carry, such as landing or upgrading, or
|
|
44
|
-
asks you to work inside a store mounted under `shared/`, that step is not yours here: a person lands an approved change from the store's approval page.
|