ctxr-cli 0.35.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +25 -2
  2. package/dist/commands/land.d.ts +1 -1
  3. package/dist/commands/land.d.ts.map +1 -1
  4. package/dist/commands/land.js +8 -4
  5. package/dist/commands/land.js.map +1 -1
  6. package/dist/commands/serve.d.ts +3 -0
  7. package/dist/commands/serve.d.ts.map +1 -1
  8. package/dist/commands/serve.js +121 -23
  9. package/dist/commands/serve.js.map +1 -1
  10. package/dist/commands/session-submit.d.ts.map +1 -1
  11. package/dist/commands/session-submit.js +2 -0
  12. package/dist/commands/session-submit.js.map +1 -1
  13. package/dist/commands/sync.d.ts +50 -0
  14. package/dist/commands/sync.d.ts.map +1 -0
  15. package/dist/commands/sync.js +186 -0
  16. package/dist/commands/sync.js.map +1 -0
  17. package/dist/commands/version.d.ts.map +1 -1
  18. package/dist/commands/version.js +6 -3
  19. package/dist/commands/version.js.map +1 -1
  20. package/dist/config/defaults.d.ts +13 -0
  21. package/dist/config/defaults.d.ts.map +1 -1
  22. package/dist/config/defaults.js +11 -0
  23. package/dist/config/defaults.js.map +1 -1
  24. package/dist/config/schema.d.ts +1 -0
  25. package/dist/config/schema.d.ts.map +1 -1
  26. package/dist/config/schema.js +7 -0
  27. package/dist/config/schema.js.map +1 -1
  28. package/dist/core/approval/sessions.d.ts.map +1 -1
  29. package/dist/core/approval/sessions.js +4 -2
  30. package/dist/core/approval/sessions.js.map +1 -1
  31. package/dist/core/browse/approve.d.ts.map +1 -1
  32. package/dist/core/browse/approve.js +12 -2
  33. package/dist/core/browse/approve.js.map +1 -1
  34. package/dist/core/browse/page-url.d.ts +13 -0
  35. package/dist/core/browse/page-url.d.ts.map +1 -1
  36. package/dist/core/browse/page-url.js +17 -0
  37. package/dist/core/browse/page-url.js.map +1 -1
  38. package/dist/core/browse/pull-preview.d.ts +67 -0
  39. package/dist/core/browse/pull-preview.d.ts.map +1 -0
  40. package/dist/core/browse/pull-preview.js +154 -0
  41. package/dist/core/browse/pull-preview.js.map +1 -0
  42. package/dist/core/browse/webhook.d.ts +38 -0
  43. package/dist/core/browse/webhook.d.ts.map +1 -0
  44. package/dist/core/browse/webhook.js +102 -0
  45. package/dist/core/browse/webhook.js.map +1 -0
  46. package/dist/core/errors.d.ts +16 -0
  47. package/dist/core/errors.d.ts.map +1 -1
  48. package/dist/core/errors.js +27 -0
  49. package/dist/core/errors.js.map +1 -1
  50. package/dist/core/git/exec.d.ts +16 -1
  51. package/dist/core/git/exec.d.ts.map +1 -1
  52. package/dist/core/git/exec.js +15 -4
  53. package/dist/core/git/exec.js.map +1 -1
  54. package/dist/core/git/fast-forward.d.ts +23 -0
  55. package/dist/core/git/fast-forward.d.ts.map +1 -1
  56. package/dist/core/git/fast-forward.js +24 -0
  57. package/dist/core/git/fast-forward.js.map +1 -1
  58. package/dist/core/git/hardened.d.ts +15 -0
  59. package/dist/core/git/hardened.d.ts.map +1 -0
  60. package/dist/core/git/hardened.js +123 -0
  61. package/dist/core/git/hardened.js.map +1 -0
  62. package/dist/core/install-kind.d.ts +10 -3
  63. package/dist/core/install-kind.d.ts.map +1 -1
  64. package/dist/core/install-kind.js +48 -14
  65. package/dist/core/install-kind.js.map +1 -1
  66. package/dist/core/npm-prefix.d.ts +10 -0
  67. package/dist/core/npm-prefix.d.ts.map +1 -0
  68. package/dist/core/npm-prefix.js +11 -0
  69. package/dist/core/npm-prefix.js.map +1 -0
  70. package/dist/core/session/submit.d.ts +7 -0
  71. package/dist/core/session/submit.d.ts.map +1 -1
  72. package/dist/core/session/submit.js +8 -0
  73. package/dist/core/session/submit.js.map +1 -1
  74. package/dist/core/store-update-runner.d.ts +57 -0
  75. package/dist/core/store-update-runner.d.ts.map +1 -0
  76. package/dist/core/{approval/lander.js → store-update-runner.js} +41 -17
  77. package/dist/core/store-update-runner.js.map +1 -0
  78. package/dist/run.d.ts.map +1 -1
  79. package/dist/run.js +12 -0
  80. package/dist/run.js.map +1 -1
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/package.json +1 -1
  84. package/templates/approve/pages-note-pull.md +1 -0
  85. package/templates/conventions/baseline-conventions.md +5 -0
  86. package/templates/skills/ctxr-upgrade.md +5 -5
  87. package/dist/core/approval/lander.d.ts +0 -38
  88. package/dist/core/approval/lander.d.ts.map +0 -1
  89. package/dist/core/approval/lander.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { type NpmPrefixRunner } from './npm-prefix.js';
1
2
  /**
2
3
  * How this executable got onto the path — a FACT the CLI computes, so the
3
4
  * upgrade skill can branch on it instead of shelling around to work it out in
@@ -16,12 +17,18 @@ export type InstallKind = 'global' | 'linked' | 'undetermined';
16
17
  * a dev checkout both resolve to, because Node resolves the symlink before
17
18
  * import.meta.url is derived.
18
19
  */
19
- export declare function classifyInstallPath(binPath: string, execPath: string): InstallKind;
20
+ export declare function classifyInstallPath(binPath: string, execPath: string, npmPrefix?: string | null): InstallKind;
21
+ /**
22
+ * Where `npm install -g` writes: NPM_CONFIG_PREFIX / npm_config_prefix when set (npm reads those
23
+ * before any npmrc, so they are its answer), otherwise npm's own answer. Null when neither can be
24
+ * had, and the classification falls back to the running Node's prefix.
25
+ */
26
+ export declare function npmGlobalPrefix(env: Readonly<Record<string, string | undefined>>, ask?: NpmPrefixRunner): Promise<string | null>;
20
27
  export interface InstallLocation {
21
28
  path: string;
22
29
  kind: InstallKind;
23
30
  }
24
- export declare function resolveInstallLocation(execPath: string): InstallLocation;
31
+ export declare function resolveInstallLocation(execPath: string, npmPrefix?: string | null): InstallLocation;
25
32
  /**
26
33
  * migrate-stores-on-update (design D5): can the running user upgrade this
27
34
  * global install in place? `npm install -g` writes the package into the global
@@ -34,5 +41,5 @@ export declare function resolveInstallLocation(execPath: string): InstallLocatio
34
41
  * could never succeed. Only meaningful for a `global` classification; callers
35
42
  * do not ask for the other two.
36
43
  */
37
- export declare function isGlobalInstallWritable(binPath: string, execPath: string): Promise<boolean>;
44
+ export declare function isGlobalInstallWritable(binPath: string, execPath: string, npmPrefix?: string | null): Promise<boolean>;
38
45
  //# sourceMappingURL=install-kind.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-kind.d.ts","sourceRoot":"","sources":["../../src/core/install-kind.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,CAAC;AAwB/D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAMlF;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;CACnB;AAkBD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAGxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAajG"}
1
+ {"version":3,"file":"install-kind.d.ts","sourceRoot":"","sources":["../../src/core/install-kind.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,CAAC;AAwD/D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,WAAW,CAMnH;AAGD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EACjD,GAAG,GAAE,eAAiC,GACrC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;CACnB;AAkBD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,eAAe,CAGzG;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAYlI"}
@@ -1,21 +1,45 @@
1
1
  import { access, constants } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
+ import { askNpmForPrefix } from './npm-prefix.js';
4
5
  const NODE_MODULES = 'node_modules';
5
6
  /**
6
- * Global installs live under the Node prefix's node_modules:
7
+ * Global installs under the running Node's own prefix:
7
8
  * POSIX `<prefix>/lib/node_modules`, where execPath is `<prefix>/bin/node`;
8
- * Windows `<dir of node.exe>/node_modules`.
9
+ * Windows `<dir of node.exe>/node_modules`. Launchers go beside node.
9
10
  */
10
- function globalRootsFor(execPath) {
11
+ function nodePrefixRoots(execPath) {
11
12
  const binDir = path.dirname(execPath);
12
13
  const prefix = path.dirname(binDir);
13
14
  return [
14
- path.join(prefix, 'lib', NODE_MODULES),
15
- path.join(prefix, NODE_MODULES),
16
- path.join(binDir, NODE_MODULES),
15
+ { modules: path.join(prefix, 'lib', NODE_MODULES), bin: binDir },
16
+ { modules: path.join(prefix, NODE_MODULES), bin: binDir },
17
+ { modules: path.join(binDir, NODE_MODULES), bin: binDir },
17
18
  ];
18
19
  }
20
+ /**
21
+ * Global installs under npm's configured prefix -- where `npm install -g` writes, which is the
22
+ * question the classification answers (install-tools-in-the-home D4): POSIX
23
+ * `<prefix>/lib/node_modules` with launchers in `<prefix>/bin`, Windows `<prefix>/node_modules`
24
+ * with launchers in `<prefix>` itself.
25
+ */
26
+ function npmPrefixRoots(prefix) {
27
+ return [
28
+ { modules: path.join(prefix, 'lib', NODE_MODULES), bin: path.join(prefix, 'bin') },
29
+ { modules: path.join(prefix, NODE_MODULES), bin: prefix },
30
+ ];
31
+ }
32
+ /**
33
+ * The roots a global install may live under. With npm's prefix known, only those: an install
34
+ * under Node's own prefix that npm would not write to is not one `npm install -g` replaces. Node's
35
+ * prefix stands in only when npm could not be asked (`npmPrefix` null).
36
+ */
37
+ function globalRoots(execPath, npmPrefix) {
38
+ return npmPrefix === null ? nodePrefixRoots(execPath) : npmPrefixRoots(path.resolve(npmPrefix));
39
+ }
40
+ function rootOf(resolved, execPath, npmPrefix) {
41
+ return globalRoots(path.resolve(execPath), npmPrefix).find((root) => isUnder(resolved, root.modules));
42
+ }
19
43
  function isUnder(child, parent) {
20
44
  const relative = path.relative(parent, child);
21
45
  return relative.length > 0 && !relative.startsWith('..') && !path.isAbsolute(relative);
@@ -26,15 +50,26 @@ function isUnder(child, parent) {
26
50
  * a dev checkout both resolve to, because Node resolves the symlink before
27
51
  * import.meta.url is derived.
28
52
  */
29
- export function classifyInstallPath(binPath, execPath) {
53
+ export function classifyInstallPath(binPath, execPath, npmPrefix = null) {
30
54
  const resolved = path.resolve(binPath);
31
55
  const segments = resolved.split(path.sep);
32
56
  if (!segments.includes(NODE_MODULES))
33
57
  return 'linked';
34
- if (globalRootsFor(path.resolve(execPath)).some((root) => isUnder(resolved, root)))
58
+ if (rootOf(resolved, execPath, npmPrefix) !== undefined)
35
59
  return 'global';
36
60
  return 'undetermined';
37
61
  }
62
+ /**
63
+ * Where `npm install -g` writes: NPM_CONFIG_PREFIX / npm_config_prefix when set (npm reads those
64
+ * before any npmrc, so they are its answer), otherwise npm's own answer. Null when neither can be
65
+ * had, and the classification falls back to the running Node's prefix.
66
+ */
67
+ export async function npmGlobalPrefix(env, ask = askNpmForPrefix) {
68
+ const configured = (env.NPM_CONFIG_PREFIX ?? env.npm_config_prefix ?? '').trim();
69
+ if (configured !== '' && path.isAbsolute(configured))
70
+ return configured;
71
+ return ask();
72
+ }
38
73
  /**
39
74
  * The entrypoint of the process running right now.
40
75
  *
@@ -50,9 +85,9 @@ export function classifyInstallPath(binPath, execPath) {
50
85
  function runningEntrypoint() {
51
86
  return fileURLToPath(new URL('../bin.js', import.meta.url));
52
87
  }
53
- export function resolveInstallLocation(execPath) {
88
+ export function resolveInstallLocation(execPath, npmPrefix = null) {
54
89
  const binPath = runningEntrypoint();
55
- return { path: binPath, kind: classifyInstallPath(binPath, execPath) };
90
+ return { path: binPath, kind: classifyInstallPath(binPath, execPath, npmPrefix) };
56
91
  }
57
92
  /**
58
93
  * migrate-stores-on-update (design D5): can the running user upgrade this
@@ -66,12 +101,11 @@ export function resolveInstallLocation(execPath) {
66
101
  * could never succeed. Only meaningful for a `global` classification; callers
67
102
  * do not ask for the other two.
68
103
  */
69
- export async function isGlobalInstallWritable(binPath, execPath) {
70
- const resolved = path.resolve(binPath);
71
- const root = globalRootsFor(path.resolve(execPath)).find((candidate) => isUnder(resolved, candidate));
104
+ export async function isGlobalInstallWritable(binPath, execPath, npmPrefix = null) {
105
+ const root = rootOf(path.resolve(binPath), execPath, npmPrefix);
72
106
  if (root === undefined)
73
107
  return false;
74
- const targets = [root, path.dirname(path.resolve(execPath))];
108
+ const targets = [root.modules, root.bin];
75
109
  for (const target of targets) {
76
110
  try {
77
111
  await access(target, constants.W_OK);
@@ -1 +1 @@
1
- {"version":3,"file":"install-kind.js","sourceRoot":"","sources":["../../src/core/install-kind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-kind.js","sourceRoot":"","sources":["../../src/core/install-kind.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The one place ctxr spawns npm: `npm prefix -g`, to learn where `npm install -g` writes, so the
3
+ * version report can tell whether that install would replace the running executable
4
+ * (install-tools-in-the-home D4). Only asked when NPM_CONFIG_PREFIX / npm_config_prefix do not
5
+ * already answer.
6
+ */
7
+ export type NpmPrefixRunner = () => Promise<string | null>;
8
+ /** `npm prefix -g`, or null when npm is not on PATH, fails, or does not answer in time. */
9
+ export declare const askNpmForPrefix: NpmPrefixRunner;
10
+ //# sourceMappingURL=npm-prefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-prefix.d.ts","sourceRoot":"","sources":["../../src/core/npm-prefix.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAI3D,2FAA2F;AAC3F,eAAO,MAAM,eAAe,EAAE,eAO1B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { execFile } from 'node:child_process';
2
+ import path from 'node:path';
3
+ const NPM_PREFIX_TIMEOUT_MS = 5_000;
4
+ /** `npm prefix -g`, or null when npm is not on PATH, fails, or does not answer in time. */
5
+ export const askNpmForPrefix = () => new Promise((resolve) => {
6
+ execFile('npm', ['prefix', '-g'], { timeout: NPM_PREFIX_TIMEOUT_MS, killSignal: 'SIGKILL', shell: process.platform === 'win32' }, (err, stdout) => {
7
+ const answer = String(stdout ?? '').trim();
8
+ resolve(err || answer === '' || !path.isAbsolute(answer) ? null : answer);
9
+ });
10
+ });
11
+ //# sourceMappingURL=npm-prefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-prefix.js","sourceRoot":"","sources":["../../src/core/npm-prefix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAEpC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,eAAe,GAAoB,GAAG,EAAE,CACnD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,EAC9H,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACd,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,IAAI,MAAM,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -49,6 +49,11 @@ export interface SubmitResult {
49
49
  /** The session the pull request belongs to, as its marker names it; null when the store has no `origin` to name it by. */
50
50
  session_identity: SessionIdentity | null;
51
51
  approval_url: string | null;
52
+ /**
53
+ * serve-keeps-its-clone-current D6: where the pull request's pages preview, at the address of the store that will
54
+ * publish them; null when that store declares no `serve.base_url`.
55
+ */
56
+ preview_url: string | null;
52
57
  }
53
58
  export interface SubmitDeps extends RemoteDeps {
54
59
  /** D4: the MCP surface's member identity; omitted, the clone's own identity commits. */
@@ -60,6 +65,8 @@ export interface SubmitDeps extends RemoteDeps {
60
65
  * report lists no page. The sentences are `templates/session/pages/`'s.
61
66
  */
62
67
  export declare function renderPagesSection(pages: readonly PageUrlEntry[], base: string, baseUrlDeclared: boolean): string | null;
68
+ /** The pull request's preview root at the publishing store's `serve.base_url`; null when it declares none. */
69
+ export declare function pullPreviewAddress(config: Store['config'], number: number): string | null;
63
70
  export declare function approvalAddress(config: Store['config'], name: string): string | null;
64
71
  export declare function submitSession(deps: SubmitDeps, session: SessionRef, input: SubmitInput): Promise<SubmitResult>;
65
72
  /** `--body-file`: the body read from a file, relative to `cwd`. */
@@ -1 +1 @@
1
- {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/core/session/submit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAElG,OAAO,EAA0F,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAO7J,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAA6D,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3H,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;AAEzG,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,kFAAkF;IAClF,0HAA0H;IAC1H,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,wFAAwF;IACxF,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;CACzC;AA2CD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAexH;AA2BD,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpF;AAmCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA+GpH;AAED,mEAAmE;AACnE,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7E"}
1
+ {"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/core/session/submit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAElG,OAAO,EAA0F,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAO7J,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAA6D,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3H,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;AAEzG,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,kFAAkF;IAClF,0HAA0H;IAC1H,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,wFAAwF;IACxF,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;CACzC;AA2CD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAexH;AA2BD,8GAA8G;AAC9G,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGzF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKpF;AAmCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAiHpH;AAED,mEAAmE;AACnE,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7E"}
@@ -13,6 +13,7 @@ import { ContextureError, SessionRefusedError } from '../errors.js';
13
13
  import { ExitCode } from '../exit-codes.js';
14
14
  import { hasRemote } from '../git/worktree.js';
15
15
  import { packagedTemplate, substituteBlock } from '../templates.js';
16
+ import { joinBaseUrl, pullPreviewRoute } from '../browse/page-url.js';
16
17
  import { commitStaged } from './commit.js';
17
18
  import { firstLines, publishSession, remoteTip, SessionRemoteError } from './remote.js';
18
19
  import { commitsAhead, rebaseInProgress } from './resolve.js';
@@ -98,6 +99,11 @@ async function sessionApprovalAddress(deps, session, identity) {
98
99
  }
99
100
  return approvalAddress(deps.config, session.name);
100
101
  }
102
+ /** The pull request's preview root at the publishing store's `serve.base_url`; null when it declares none. */
103
+ export function pullPreviewAddress(config, number) {
104
+ const baseUrl = config.serve?.base_url;
105
+ return baseUrl === undefined ? null : joinBaseUrl(baseUrl, pullPreviewRoute(number));
106
+ }
101
107
  export function approvalAddress(config, name) {
102
108
  if (config.change_approval === undefined)
103
109
  return null;
@@ -240,6 +246,8 @@ export async function submitSession(deps, session, input) {
240
246
  pull_request: { number: published.pull.number, url: published.pull.url },
241
247
  session_identity: identity,
242
248
  approval_url: await sessionApprovalAddress(deps, session, identity),
249
+ // The worktree's own configuration: the store whose repository the pull request is on publishes its pages.
250
+ preview_url: pullPreviewAddress((await openWorktreeStore(session)).config, published.pull.number),
243
251
  };
244
252
  }
245
253
  /** `--body-file`: the body read from a file, relative to `cwd`. */
@@ -1 +1 @@
1
- {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/core/session/submit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/core/session/submit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * context-browsing spec ("The server keeps its clone of the store current";
3
+ * "Store-update runs never overlap and never change how requests are
4
+ * answered"), change-approval spec ("The server lands what was approved"):
5
+ * `ctxr serve`'s one timer. Each store-update run is a child process running
6
+ * the same command a person runs — `ctxr land --pending` while the loaded
7
+ * configuration turns landing on, `ctxr sync` otherwise — so a resolver that
8
+ * runs for minutes, a hung fetch or a crash stays out of the request loop
9
+ * (serve-lands-approved-changes D2; serve-keeps-its-clone-current D1, D2).
10
+ * The one place serve spawns either.
11
+ *
12
+ * Three states: idle, running, running with one more run pending. Any number
13
+ * of triggers during a run produce exactly one further run. A run starts once
14
+ * shortly after start (D5), then every `intervalMs`, so a change merged on the
15
+ * forge, or an approval recorded while the server was down, is picked up
16
+ * promptly. The runner itself runs no git: each child's git is hardened by the
17
+ * command it runs (D12).
18
+ */
19
+ export type StoreUpdateKind = 'land' | 'sync';
20
+ export interface StoreUpdateSettings {
21
+ kind: StoreUpdateKind;
22
+ intervalMs: number;
23
+ }
24
+ export interface StoreUpdateRunner {
25
+ /** Starts a run now, or one more after the run in progress. */
26
+ trigger(): void;
27
+ /** The kind the next run starts as. */
28
+ kind(): StoreUpdateKind;
29
+ /**
30
+ * Follows a configuration reload: the next run starts as `kind`, and a new
31
+ * interval reschedules the next timed run `intervalMs` from now. A run in
32
+ * progress is left to finish.
33
+ */
34
+ configure(settings: StoreUpdateSettings): void;
35
+ stop(): Promise<void>;
36
+ }
37
+ export interface ChildLike {
38
+ stdout: NodeJS.ReadableStream | null;
39
+ stderr: NodeJS.ReadableStream | null;
40
+ once(event: 'close', listener: (code: number | null) => void): unknown;
41
+ kill(signal?: NodeJS.Signals): boolean;
42
+ }
43
+ export type SpawnLike = (command: string, args: string[], opts: {
44
+ cwd: string;
45
+ env: NodeJS.ProcessEnv;
46
+ }) => ChildLike;
47
+ export interface StoreUpdateRunnerOptions extends StoreUpdateSettings {
48
+ /** The executable and its leading arguments, e.g. [node, bin.js]. */
49
+ command: readonly string[];
50
+ root: string;
51
+ env: Readonly<Record<string, string | undefined>>;
52
+ output: NodeJS.WritableStream;
53
+ firstRunMs?: number;
54
+ spawn?: SpawnLike;
55
+ }
56
+ export declare function createStoreUpdateRunner(opts: StoreUpdateRunnerOptions): StoreUpdateRunner;
57
+ //# sourceMappingURL=store-update-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-update-runner.d.ts","sourceRoot":"","sources":["../../src/core/store-update-runner.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,OAAO,IAAI,IAAI,CAAC;IAChB,uCAAuC;IACvC,IAAI,IAAI,eAAe,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC/C,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,wBAAyB,SAAQ,mBAAmB;IACnE,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,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AA+BD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,wBAAwB,GAAG,iBAAiB,CA4EzF"}
@@ -1,9 +1,16 @@
1
1
  import { spawn } from 'node:child_process';
2
- const DEFAULT_SWEEP_MS = 5 * 60 * 1000;
3
- const DEFAULT_FIRST_SWEEP_MS = 10 * 1000;
2
+ const DEFAULT_FIRST_RUN_MS = 10 * 1000;
3
+ const ARGS = {
4
+ land: ['land', '--pending'],
5
+ sync: ['sync'],
6
+ };
7
+ const FAILED = {
8
+ land: 'the landing run',
9
+ sync: 'the sync run',
10
+ };
4
11
  const realSpawn = (command, args, opts) => spawn(command, args, { cwd: opts.cwd, env: opts.env, stdio: ['ignore', 'pipe', 'pipe'] });
5
- /** Each line of a stream to `output`, prefixed, so the run reads apart from serve's own log. */
6
- function prefixLines(stream, output) {
12
+ /** Each line of a stream to `output`, prefixed by the run's kind, so the run reads apart from serve's own log. */
13
+ function prefixLines(stream, output, prefix) {
7
14
  if (stream === null)
8
15
  return;
9
16
  let partial = '';
@@ -11,33 +18,36 @@ function prefixLines(stream, output) {
11
18
  const lines = (partial + chunk.toString()).split('\n');
12
19
  partial = lines.pop() ?? '';
13
20
  for (const line of lines)
14
- output.write(`land: ${line}\n`);
21
+ output.write(`${prefix}: ${line}\n`);
15
22
  });
16
23
  stream.on('end', () => {
17
24
  if (partial !== '')
18
- output.write(`land: ${partial}\n`);
25
+ output.write(`${prefix}: ${partial}\n`);
19
26
  partial = '';
20
27
  });
21
28
  }
22
- export function createLander(opts) {
29
+ export function createStoreUpdateRunner(opts) {
23
30
  const [command, ...leading] = opts.command;
24
31
  const spawnChild = opts.spawn ?? realSpawn;
32
+ let settings = { kind: opts.kind, intervalMs: opts.intervalMs };
25
33
  let child = null;
26
34
  let closed = null;
27
35
  let pending = false;
28
36
  let stopped = false;
37
+ let firstDone = false;
29
38
  function start() {
30
- const run = spawnChild(command, [...leading, 'land', '--pending', '--root', opts.root], {
39
+ const kind = settings.kind;
40
+ const run = spawnChild(command, [...leading, ...ARGS[kind], '--root', opts.root], {
31
41
  cwd: opts.root,
32
42
  env: opts.env,
33
43
  });
34
44
  child = run;
35
- prefixLines(run.stdout, opts.output);
36
- prefixLines(run.stderr, opts.output);
45
+ prefixLines(run.stdout, opts.output, kind);
46
+ prefixLines(run.stderr, opts.output, kind);
37
47
  closed = new Promise((resolve) => {
38
48
  run.once('close', (code) => {
39
49
  if (code !== 0)
40
- opts.output.write(`land: the landing run exited ${code ?? 'on a signal'}\n`);
50
+ opts.output.write(`${kind}: ${FAILED[kind]} exited ${code ?? 'on a signal'}\n`);
41
51
  child = null;
42
52
  closed = null;
43
53
  resolve();
@@ -57,14 +67,28 @@ export function createLander(opts) {
57
67
  }
58
68
  start();
59
69
  }
60
- let timer = setTimeout(function sweep() {
61
- trigger();
62
- timer = setTimeout(sweep, opts.sweepMs ?? DEFAULT_SWEEP_MS);
70
+ let timer;
71
+ function schedule(delay) {
72
+ timer = setTimeout(() => {
73
+ firstDone = true;
74
+ trigger();
75
+ schedule(settings.intervalMs);
76
+ }, delay);
63
77
  timer.unref();
64
- }, opts.firstSweepMs ?? DEFAULT_FIRST_SWEEP_MS);
65
- timer.unref();
78
+ }
79
+ schedule(opts.firstRunMs ?? DEFAULT_FIRST_RUN_MS);
66
80
  return {
67
81
  trigger,
82
+ kind: () => settings.kind,
83
+ configure(next) {
84
+ const intervalChanged = next.intervalMs !== settings.intervalMs;
85
+ settings = { ...next };
86
+ // Before the first run, its timer stands; after it, a new interval counts from now.
87
+ if (intervalChanged && firstDone && !stopped) {
88
+ clearTimeout(timer);
89
+ schedule(settings.intervalMs);
90
+ }
91
+ },
68
92
  async stop() {
69
93
  stopped = true;
70
94
  pending = false;
@@ -77,4 +101,4 @@ export function createLander(opts) {
77
101
  },
78
102
  };
79
103
  }
80
- //# sourceMappingURL=lander.js.map
104
+ //# sourceMappingURL=store-update-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-update-runner.js","sourceRoot":"","sources":["../../src/core/store-update-runner.ts"],"names":[],"mappings":"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"}
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4CpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQhD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAuIpE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAA;CAAE,CA2sB3F;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgDjF"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQhD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAuIpE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAA;CAAE,CAutB3F;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgDjF"}
package/dist/run.js CHANGED
@@ -7,6 +7,7 @@ import * as archiveCommand from './commands/archive.js';
7
7
  import * as doctorCommand from './commands/doctor.js';
8
8
  import * as ingestCommand from './commands/ingest.js';
9
9
  import * as landCommand from './commands/land.js';
10
+ import * as syncCommand from './commands/sync.js';
10
11
  import * as lintCommand from './commands/lint.js';
11
12
  import * as contextGatherCommand from './commands/context-gather.js';
12
13
  import * as graphBuildCommand from './commands/graph-build.js';
@@ -639,6 +640,17 @@ export function buildProgram(env) {
639
640
  return landCommand.execute(runEnv, store, { pr, pending: Boolean(cmdOpts.pending), confirm: Boolean(cmdOpts.confirm), session: cmdOpts.session });
640
641
  });
641
642
  });
643
+ program
644
+ .command('sync')
645
+ .description("bring the canonical clone up to date with the forge's default branch by landing's fast-forward rule, leaving a clone with local work alone; with --every, keep doing so, mounts included")
646
+ .option('--every <minutes>', 'keep running: every this many whole minutes, sync the canonical clone and then refresh the mounts as `ctxr shared-stores sync` does', (v) => Number(v))
647
+ .action(async (cmdOpts, cmd) => {
648
+ const { runEnv, jsonMode, root } = deriveRunEnv(env, cmd);
649
+ state.result = await runCommand('sync', runEnv, jsonMode, async () => {
650
+ const store = await openStore(runEnv, { root });
651
+ return syncCommand.execute(runEnv, store, cmdOpts.every === undefined ? {} : { every: cmdOpts.every });
652
+ });
653
+ });
642
654
  // serve-the-session-lifecycle-to-chat-apps D7: the chat-app plugins, built from the MCP render of the owned skills.
643
655
  const pluginCommand = program.command('plugin').description("build the store's Claude and ChatGPT plugins: its skills and its MCP server");
644
656
  pluginCommand