ctxr-cli 0.35.0 → 0.37.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 +39 -11
- package/dist/commands/land.d.ts +1 -1
- package/dist/commands/land.d.ts.map +1 -1
- package/dist/commands/land.js +8 -4
- 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/serve.d.ts +3 -0
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +121 -23
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/session-submit.d.ts.map +1 -1
- package/dist/commands/session-submit.js +2 -0
- package/dist/commands/session-submit.js.map +1 -1
- package/dist/commands/sync.d.ts +50 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +186 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +6 -3
- package/dist/commands/version.js.map +1 -1
- package/dist/config/defaults.d.ts +13 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +11 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +1 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +7 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/core/approval/sessions.d.ts.map +1 -1
- package/dist/core/approval/sessions.js +4 -2
- package/dist/core/approval/sessions.js.map +1 -1
- package/dist/core/browse/approve.d.ts.map +1 -1
- package/dist/core/browse/approve.js +12 -2
- package/dist/core/browse/approve.js.map +1 -1
- package/dist/core/browse/page-url.d.ts +13 -0
- package/dist/core/browse/page-url.d.ts.map +1 -1
- package/dist/core/browse/page-url.js +17 -0
- package/dist/core/browse/page-url.js.map +1 -1
- package/dist/core/browse/pull-preview.d.ts +67 -0
- package/dist/core/browse/pull-preview.d.ts.map +1 -0
- package/dist/core/browse/pull-preview.js +154 -0
- package/dist/core/browse/pull-preview.js.map +1 -0
- package/dist/core/browse/webhook.d.ts +38 -0
- package/dist/core/browse/webhook.d.ts.map +1 -0
- package/dist/core/browse/webhook.js +102 -0
- package/dist/core/browse/webhook.js.map +1 -0
- package/dist/core/command.d.ts +5 -3
- package/dist/core/command.d.ts.map +1 -1
- package/dist/core/errors.d.ts +16 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +27 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/git/exec.d.ts +16 -1
- package/dist/core/git/exec.d.ts.map +1 -1
- package/dist/core/git/exec.js +15 -4
- package/dist/core/git/exec.js.map +1 -1
- package/dist/core/git/fast-forward.d.ts +23 -0
- package/dist/core/git/fast-forward.d.ts.map +1 -1
- package/dist/core/git/fast-forward.js +24 -0
- package/dist/core/git/fast-forward.js.map +1 -1
- package/dist/core/git/hardened.d.ts +15 -0
- package/dist/core/git/hardened.d.ts.map +1 -0
- package/dist/core/git/hardened.js +123 -0
- package/dist/core/git/hardened.js.map +1 -0
- package/dist/core/install-kind.d.ts +10 -3
- package/dist/core/install-kind.d.ts.map +1 -1
- package/dist/core/install-kind.js +48 -14
- package/dist/core/install-kind.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 +13 -11
- package/dist/core/mcp/tool-map.d.ts.map +1 -1
- package/dist/core/mcp/tool-map.js +13 -11
- package/dist/core/mcp/tool-map.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 +9 -1
- package/dist/core/mcp/tools/index.d.ts.map +1 -1
- package/dist/core/mcp/tools/index.js +20 -3
- package/dist/core/mcp/tools/index.js.map +1 -1
- package/dist/core/npm-prefix.d.ts +10 -0
- package/dist/core/npm-prefix.d.ts.map +1 -0
- package/dist/core/npm-prefix.js +11 -0
- package/dist/core/npm-prefix.js.map +1 -0
- 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 +23 -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/session/submit.d.ts +7 -0
- package/dist/core/session/submit.d.ts.map +1 -1
- package/dist/core/session/submit.js +14 -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 +37 -12
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +78 -89
- package/dist/core/skills.js.map +1 -1
- package/dist/core/store-update-runner.d.ts +57 -0
- package/dist/core/store-update-runner.d.ts.map +1 -0
- package/dist/core/{approval/lander.js → store-update-runner.js} +41 -17
- package/dist/core/store-update-runner.js.map +1 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +37 -6
- 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/approve/pages-note-pull.md +1 -0
- package/templates/conventions/baseline-conventions.md +5 -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/skills/_surfaces.md +30 -0
- package/templates/skills/ctxr-placement.md +1 -1
- package/templates/skills/ctxr-session-lifecycle.md +6 -5
- package/templates/skills/ctxr-upgrade.md +5 -5
- package/templates/skills/mcp/_layer-step.md +18 -0
- package/templates/skills/mcp/_relation-grouping-step.md +5 -0
- package/dist/core/approval/lander.d.ts +0 -38
- package/dist/core/approval/lander.d.ts.map +0 -1
- package/dist/core/approval/lander.js.map +0 -1
- package/templates/plugin/claude-mcp.json +0 -8
- package/templates/skills/mcp/_preamble.md +0 -44
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* change-approval spec ("The server lands what was approved";
|
|
3
|
-
* serve-lands-approved-changes D2, D3): `ctxr serve` lands approved changes by
|
|
4
|
-
* running `ctxr land --pending` — the same command a person runs — as a child
|
|
5
|
-
* process, so a resolver that runs for minutes, a hang or a crash stays out of
|
|
6
|
-
* the request loop. The one place serve spawns it.
|
|
7
|
-
*
|
|
8
|
-
* Three states: idle, running, running with one more run pending. Any number of
|
|
9
|
-
* triggers during a run produce exactly one further run. A sweep triggers every
|
|
10
|
-
* `sweepMs`, and once shortly after start, so approvals recorded while the
|
|
11
|
-
* server was down land promptly.
|
|
12
|
-
*/
|
|
13
|
-
export interface Lander {
|
|
14
|
-
trigger(): void;
|
|
15
|
-
stop(): Promise<void>;
|
|
16
|
-
}
|
|
17
|
-
export interface ChildLike {
|
|
18
|
-
stdout: NodeJS.ReadableStream | null;
|
|
19
|
-
stderr: NodeJS.ReadableStream | null;
|
|
20
|
-
once(event: 'close', listener: (code: number | null) => void): unknown;
|
|
21
|
-
kill(signal?: NodeJS.Signals): boolean;
|
|
22
|
-
}
|
|
23
|
-
export type SpawnLike = (command: string, args: string[], opts: {
|
|
24
|
-
cwd: string;
|
|
25
|
-
env: NodeJS.ProcessEnv;
|
|
26
|
-
}) => ChildLike;
|
|
27
|
-
export interface LanderOptions {
|
|
28
|
-
/** The executable and its leading arguments, e.g. [node, bin.js]. */
|
|
29
|
-
command: readonly string[];
|
|
30
|
-
root: string;
|
|
31
|
-
env: Readonly<Record<string, string | undefined>>;
|
|
32
|
-
output: NodeJS.WritableStream;
|
|
33
|
-
sweepMs?: number;
|
|
34
|
-
firstSweepMs?: number;
|
|
35
|
-
spawn?: SpawnLike;
|
|
36
|
-
}
|
|
37
|
-
export declare function createLander(opts: LanderOptions): Lander;
|
|
38
|
-
//# sourceMappingURL=lander.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lander.d.ts","sourceRoot":"","sources":["../../../src/core/approval/lander.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,MAAM;IACrB,OAAO,IAAI,IAAI,CAAC;IAChB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KAAK,SAAS,CAAC;AAEtH,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAsBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA2DxD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lander.js","sourceRoot":"","sources":["../../../src/core/approval/lander.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAuC3C,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACvC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzC,MAAM,SAAS,GAAc,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAEhJ,gGAAgG;AAChG,SAAS,WAAW,CAAC,MAAoC,EAAE,MAA6B;IACtF,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO;IAC5B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACpB,IAAI,OAAO,KAAK,EAAE;YAAE,MAAM,CAAC,KAAK,CAAC,SAAS,OAAO,IAAI,CAAC,CAAC;QACvD,OAAO,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAmB;IAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;IAC3C,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,IAAI,MAAM,GAAyB,IAAI,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,SAAS,KAAK;QACZ,MAAM,GAAG,GAAG,UAAU,CAAC,OAAQ,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACvF,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,GAAG,EAAE,IAAI,CAAC,GAAwB;SACnC,CAAC,CAAC;QACH,KAAK,GAAG,GAAG,CAAC;QACZ,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC;oBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,IAAI,aAAa,IAAI,CAAC,CAAC;gBAC7F,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,EAAE,CAAC;gBACV,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;oBACxB,OAAO,GAAG,KAAK,CAAC;oBAChB,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,OAAO;QACd,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO;QACT,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;IAED,IAAI,KAAK,GAAmB,UAAU,CAAC,SAAS,KAAK;QACnD,OAAO,EAAE,CAAC;QACV,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC;QAC5D,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,sBAAsB,CAAC,CAAC;IAChD,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,OAAO;QACL,OAAO;QACP,KAAK,CAAC,IAAI;YACR,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,GAAG,KAAK,CAAC;YAChB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,MAAM,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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.
|