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.
Files changed (150) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +39 -11
  3. package/dist/commands/land.d.ts +1 -1
  4. package/dist/commands/land.d.ts.map +1 -1
  5. package/dist/commands/land.js +8 -4
  6. package/dist/commands/land.js.map +1 -1
  7. package/dist/commands/plugin-build.d.ts +21 -11
  8. package/dist/commands/plugin-build.d.ts.map +1 -1
  9. package/dist/commands/plugin-build.js +45 -24
  10. package/dist/commands/plugin-build.js.map +1 -1
  11. package/dist/commands/serve.d.ts +3 -0
  12. package/dist/commands/serve.d.ts.map +1 -1
  13. package/dist/commands/serve.js +121 -23
  14. package/dist/commands/serve.js.map +1 -1
  15. package/dist/commands/session-submit.d.ts.map +1 -1
  16. package/dist/commands/session-submit.js +2 -0
  17. package/dist/commands/session-submit.js.map +1 -1
  18. package/dist/commands/sync.d.ts +50 -0
  19. package/dist/commands/sync.d.ts.map +1 -0
  20. package/dist/commands/sync.js +186 -0
  21. package/dist/commands/sync.js.map +1 -0
  22. package/dist/commands/version.d.ts.map +1 -1
  23. package/dist/commands/version.js +6 -3
  24. package/dist/commands/version.js.map +1 -1
  25. package/dist/config/defaults.d.ts +13 -0
  26. package/dist/config/defaults.d.ts.map +1 -1
  27. package/dist/config/defaults.js +11 -0
  28. package/dist/config/defaults.js.map +1 -1
  29. package/dist/config/schema.d.ts +1 -0
  30. package/dist/config/schema.d.ts.map +1 -1
  31. package/dist/config/schema.js +7 -0
  32. package/dist/config/schema.js.map +1 -1
  33. package/dist/core/approval/sessions.d.ts.map +1 -1
  34. package/dist/core/approval/sessions.js +4 -2
  35. package/dist/core/approval/sessions.js.map +1 -1
  36. package/dist/core/browse/approve.d.ts.map +1 -1
  37. package/dist/core/browse/approve.js +12 -2
  38. package/dist/core/browse/approve.js.map +1 -1
  39. package/dist/core/browse/page-url.d.ts +13 -0
  40. package/dist/core/browse/page-url.d.ts.map +1 -1
  41. package/dist/core/browse/page-url.js +17 -0
  42. package/dist/core/browse/page-url.js.map +1 -1
  43. package/dist/core/browse/pull-preview.d.ts +67 -0
  44. package/dist/core/browse/pull-preview.d.ts.map +1 -0
  45. package/dist/core/browse/pull-preview.js +154 -0
  46. package/dist/core/browse/pull-preview.js.map +1 -0
  47. package/dist/core/browse/webhook.d.ts +38 -0
  48. package/dist/core/browse/webhook.d.ts.map +1 -0
  49. package/dist/core/browse/webhook.js +102 -0
  50. package/dist/core/browse/webhook.js.map +1 -0
  51. package/dist/core/command.d.ts +5 -3
  52. package/dist/core/command.d.ts.map +1 -1
  53. package/dist/core/errors.d.ts +16 -0
  54. package/dist/core/errors.d.ts.map +1 -1
  55. package/dist/core/errors.js +27 -0
  56. package/dist/core/errors.js.map +1 -1
  57. package/dist/core/git/exec.d.ts +16 -1
  58. package/dist/core/git/exec.d.ts.map +1 -1
  59. package/dist/core/git/exec.js +15 -4
  60. package/dist/core/git/exec.js.map +1 -1
  61. package/dist/core/git/fast-forward.d.ts +23 -0
  62. package/dist/core/git/fast-forward.d.ts.map +1 -1
  63. package/dist/core/git/fast-forward.js +24 -0
  64. package/dist/core/git/fast-forward.js.map +1 -1
  65. package/dist/core/git/hardened.d.ts +15 -0
  66. package/dist/core/git/hardened.d.ts.map +1 -0
  67. package/dist/core/git/hardened.js +123 -0
  68. package/dist/core/git/hardened.js.map +1 -0
  69. package/dist/core/install-kind.d.ts +10 -3
  70. package/dist/core/install-kind.d.ts.map +1 -1
  71. package/dist/core/install-kind.js +48 -14
  72. package/dist/core/install-kind.js.map +1 -1
  73. package/dist/core/mcp/surface.js +1 -1
  74. package/dist/core/mcp/surface.js.map +1 -1
  75. package/dist/core/mcp/sync.d.ts +4 -1
  76. package/dist/core/mcp/sync.d.ts.map +1 -1
  77. package/dist/core/mcp/sync.js +6 -5
  78. package/dist/core/mcp/sync.js.map +1 -1
  79. package/dist/core/mcp/tool-map.d.ts +13 -11
  80. package/dist/core/mcp/tool-map.d.ts.map +1 -1
  81. package/dist/core/mcp/tool-map.js +13 -11
  82. package/dist/core/mcp/tool-map.js.map +1 -1
  83. package/dist/core/mcp/tools/gather.d.ts.map +1 -1
  84. package/dist/core/mcp/tools/gather.js +5 -4
  85. package/dist/core/mcp/tools/gather.js.map +1 -1
  86. package/dist/core/mcp/tools/index.d.ts +9 -1
  87. package/dist/core/mcp/tools/index.d.ts.map +1 -1
  88. package/dist/core/mcp/tools/index.js +20 -3
  89. package/dist/core/mcp/tools/index.js.map +1 -1
  90. package/dist/core/npm-prefix.d.ts +10 -0
  91. package/dist/core/npm-prefix.d.ts.map +1 -0
  92. package/dist/core/npm-prefix.js +11 -0
  93. package/dist/core/npm-prefix.js.map +1 -0
  94. package/dist/core/plugin/build.d.ts +53 -26
  95. package/dist/core/plugin/build.d.ts.map +1 -1
  96. package/dist/core/plugin/build.js +153 -50
  97. package/dist/core/plugin/build.js.map +1 -1
  98. package/dist/core/plugin/commands.d.ts +11 -0
  99. package/dist/core/plugin/commands.d.ts.map +1 -0
  100. package/dist/core/plugin/commands.js +23 -0
  101. package/dist/core/plugin/commands.js.map +1 -0
  102. package/dist/core/plugin/routes.d.ts +11 -7
  103. package/dist/core/plugin/routes.d.ts.map +1 -1
  104. package/dist/core/plugin/routes.js +27 -24
  105. package/dist/core/plugin/routes.js.map +1 -1
  106. package/dist/core/session/submit.d.ts +7 -0
  107. package/dist/core/session/submit.d.ts.map +1 -1
  108. package/dist/core/session/submit.js +14 -3
  109. package/dist/core/session/submit.js.map +1 -1
  110. package/dist/core/shared-stores.d.ts +5 -0
  111. package/dist/core/shared-stores.d.ts.map +1 -1
  112. package/dist/core/shared-stores.js +10 -0
  113. package/dist/core/shared-stores.js.map +1 -1
  114. package/dist/core/skill-placeholders.d.ts +51 -0
  115. package/dist/core/skill-placeholders.d.ts.map +1 -0
  116. package/dist/core/skill-placeholders.js +55 -0
  117. package/dist/core/skill-placeholders.js.map +1 -0
  118. package/dist/core/skills.d.ts +37 -12
  119. package/dist/core/skills.d.ts.map +1 -1
  120. package/dist/core/skills.js +78 -89
  121. package/dist/core/skills.js.map +1 -1
  122. package/dist/core/store-update-runner.d.ts +57 -0
  123. package/dist/core/store-update-runner.d.ts.map +1 -0
  124. package/dist/core/{approval/lander.js → store-update-runner.js} +41 -17
  125. package/dist/core/store-update-runner.js.map +1 -0
  126. package/dist/run.d.ts.map +1 -1
  127. package/dist/run.js +37 -6
  128. package/dist/run.js.map +1 -1
  129. package/dist/version.d.ts +1 -1
  130. package/dist/version.js +1 -1
  131. package/package.json +3 -2
  132. package/templates/approve/pages-note-pull.md +1 -0
  133. package/templates/conventions/baseline-conventions.md +5 -0
  134. package/templates/mcp/server-instructions.md +16 -0
  135. package/templates/plugin/README.md +30 -8
  136. package/templates/plugin/chatgpt-README.md +16 -0
  137. package/templates/plugin/claude-plugin.json +9 -1
  138. package/templates/plugin/command.md +7 -0
  139. package/templates/plugin/page.html +19 -8
  140. package/templates/skills/_surfaces.md +30 -0
  141. package/templates/skills/ctxr-placement.md +1 -1
  142. package/templates/skills/ctxr-session-lifecycle.md +6 -5
  143. package/templates/skills/ctxr-upgrade.md +5 -5
  144. package/templates/skills/mcp/_layer-step.md +18 -0
  145. package/templates/skills/mcp/_relation-grouping-step.md +5 -0
  146. package/dist/core/approval/lander.d.ts +0 -38
  147. package/dist/core/approval/lander.d.ts.map +0 -1
  148. package/dist/core/approval/lander.js.map +0 -1
  149. package/templates/plugin/claude-mcp.json +0 -8
  150. package/templates/skills/mcp/_preamble.md +0 -44
@@ -2,32 +2,42 @@ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
2
  import type { RunEnv } from '../core/env.js';
3
3
  import { type PluginTarget } from '../core/plugin/build.js';
4
4
  import type { Store } from '../core/store.js';
5
+ /** publish-one-contexture-plugin D1: contexture's own plugin needs no store; inside one, the store's ChatGPT plugin is written too. */
5
6
  export declare const requires: CommandRequires;
6
- /** serve-the-session-lifecycle-to-chat-apps D7: under the derived cache, which no commit carries. */
7
+ /** serve-the-session-lifecycle-to-chat-apps D7: in a store, under the derived cache, which no commit carries. */
7
8
  export declare const DEFAULT_PLUGIN_OUT = ".contexture/cache/plugin";
9
+ /** publish-one-contexture-plugin D1: outside a store, a directory of its own under the working directory, never the directory itself. */
10
+ export declare const DEFAULT_GENERAL_PLUGIN_OUT = "contexture-plugin";
11
+ /**
12
+ * Where each plugin's directory goes under `--out`. The Claude plugin's is its
13
+ * name, so `--out plugins` in contexture's repository writes the marketplace's
14
+ * `plugins/contexture/` (publish-one-contexture-plugin revision 9).
15
+ */
16
+ export declare const PLUGIN_DIRECTORIES: Readonly<Record<PluginTarget, string>>;
8
17
  export interface PluginBuildFlags {
9
18
  out?: string;
10
19
  }
11
20
  export interface PluginBuildData {
12
- name: string;
13
- version: string;
14
- mcp_url: string;
15
21
  out: string;
16
22
  skills: string[];
23
+ /** The store's connector address, which only its ChatGPT plugin carries; null when no ChatGPT plugin was written. */
24
+ mcp_url: string | null;
17
25
  plugins: {
18
26
  target: PluginTarget;
27
+ name: string;
28
+ version: string;
19
29
  directory: string;
20
30
  archive: string;
21
31
  files: number;
22
32
  }[];
23
33
  }
24
34
  /**
25
- * harness-portability spec, *`ctxr plugin build` writes the store's chat-app
26
- * plugins*: the Claude and ChatGPT plugins, each as a directory and as an
27
- * archive. A store with no `mcp` block is refused before anything is written,
28
- * by the builder's own configuration error. Each run replaces the two plugin
29
- * directories whole, so a skill the plugin no longer carries leaves nothing
30
- * behind.
35
+ * harness-portability spec, *contexture publishes one plugin for every store*:
36
+ * contexture's Claude plugin, with no connector and the CLI's version, and,
37
+ * in a store that declares `mcp`, that store's ChatGPT plugin with its
38
+ * connector — each as a directory and an archive. A store without the block
39
+ * gets the Claude plugin and a notice. Each run replaces the plugin
40
+ * directories whole, so a skill the plugin no longer carries leaves nothing behind.
31
41
  */
32
- export declare function execute(env: RunEnv, store: Store, flags: PluginBuildFlags): Promise<CommandOutcome<PluginBuildData>>;
42
+ export declare function execute(env: RunEnv, store: Store | null, flags: PluginBuildFlags): Promise<CommandOutcome<PluginBuildData>>;
33
43
  //# sourceMappingURL=plugin-build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-build.d.ts","sourceRoot":"","sources":["../../src/commands/plugin-build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAA8C,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACxG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxF;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAkC1H"}
1
+ {"version":3,"file":"plugin-build.d.ts","sourceRoot":"","sources":["../../src/commands/plugin-build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAA6G,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvK,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,uIAAuI;AACvI,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,iHAAiH;AACjH,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,yIAAyI;AACzI,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAsD,CAAC;AAE7H,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qHAAqH;IACrH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvH;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CA8CjI"}
@@ -2,30 +2,49 @@ import { mkdir, rm } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { ExitCode } from '../core/exit-codes.js';
4
4
  import { writeFileAtomic } from '../core/fs/atomic.js';
5
- import { buildPlugins, renderedCommit, storeNameFor } from '../core/plugin/build.js';
5
+ import { buildChatgptPlugin, buildClaudePlugin, CLAUDE_PLUGIN_NAME, renderedCommit, storeNameFor } from '../core/plugin/build.js';
6
6
  import { CLI_VERSION } from '../version.js';
7
- export const requires = { store: 'required' };
8
- /** serve-the-session-lifecycle-to-chat-apps D7: under the derived cache, which no commit carries. */
7
+ /** publish-one-contexture-plugin D1: contexture's own plugin needs no store; inside one, the store's ChatGPT plugin is written too. */
8
+ export const requires = { store: 'optional' };
9
+ /** serve-the-session-lifecycle-to-chat-apps D7: in a store, under the derived cache, which no commit carries. */
9
10
  export const DEFAULT_PLUGIN_OUT = '.contexture/cache/plugin';
11
+ /** publish-one-contexture-plugin D1: outside a store, a directory of its own under the working directory, never the directory itself. */
12
+ export const DEFAULT_GENERAL_PLUGIN_OUT = 'contexture-plugin';
10
13
  /**
11
- * harness-portability spec, *`ctxr plugin build` writes the store's chat-app
12
- * plugins*: the Claude and ChatGPT plugins, each as a directory and as an
13
- * archive. A store with no `mcp` block is refused before anything is written,
14
- * by the builder's own configuration error. Each run replaces the two plugin
15
- * directories whole, so a skill the plugin no longer carries leaves nothing
16
- * behind.
14
+ * Where each plugin's directory goes under `--out`. The Claude plugin's is its
15
+ * name, so `--out plugins` in contexture's repository writes the marketplace's
16
+ * `plugins/contexture/` (publish-one-contexture-plugin revision 9).
17
+ */
18
+ export const PLUGIN_DIRECTORIES = { claude: CLAUDE_PLUGIN_NAME, chatgpt: 'chatgpt' };
19
+ /**
20
+ * harness-portability spec, *contexture publishes one plugin for every store*:
21
+ * contexture's Claude plugin, with no connector and the CLI's version, and,
22
+ * in a store that declares `mcp`, that store's ChatGPT plugin with its
23
+ * connector — each as a directory and an archive. A store without the block
24
+ * gets the Claude plugin and a notice. Each run replaces the plugin
25
+ * directories whole, so a skill the plugin no longer carries leaves nothing behind.
17
26
  */
18
27
  export async function execute(env, store, flags) {
19
- const bundle = buildPlugins({
20
- config: store.config,
21
- storeName: await storeNameFor(env.git, store.root),
22
- cliVersion: CLI_VERSION,
23
- commit: await renderedCommit(env.git, store.root),
24
- });
25
- const out = flags.out === undefined ? path.join(store.root, DEFAULT_PLUGIN_OUT) : path.resolve(env.cwd, flags.out);
28
+ const built = [buildClaudePlugin(CLI_VERSION)];
29
+ let mcpUrl = null;
30
+ const notices = [];
31
+ if (store !== null && store.config.mcp !== undefined) {
32
+ const chatgpt = buildChatgptPlugin({
33
+ config: store.config,
34
+ storeName: await storeNameFor(env.git, store.root),
35
+ cliVersion: CLI_VERSION,
36
+ commit: await renderedCommit(env.git, store.root),
37
+ });
38
+ built.push(chatgpt);
39
+ mcpUrl = chatgpt.mcpUrl;
40
+ }
41
+ else if (store !== null) {
42
+ notices.push("plugin build: this store declares no mcp block, so no ChatGPT plugin was written; contexture's Claude plugin needs none.");
43
+ }
44
+ const out = flags.out !== undefined ? path.resolve(env.cwd, flags.out) : store !== null ? path.join(store.root, DEFAULT_PLUGIN_OUT) : path.resolve(env.cwd, DEFAULT_GENERAL_PLUGIN_OUT);
26
45
  const plugins = [];
27
- for (const plugin of bundle.plugins) {
28
- const directory = path.join(out, plugin.target);
46
+ for (const plugin of built) {
47
+ const directory = path.join(out, PLUGIN_DIRECTORIES[plugin.target]);
29
48
  await rm(directory, { recursive: true, force: true });
30
49
  for (const [file, content] of plugin.files) {
31
50
  const target = path.join(directory, ...file.split('/'));
@@ -34,18 +53,20 @@ export async function execute(env, store, flags) {
34
53
  }
35
54
  const archive = path.join(out, plugin.archiveName);
36
55
  await writeFileAtomic(archive, plugin.archive);
37
- plugins.push({ target: plugin.target, directory, archive, files: plugin.files.size });
56
+ plugins.push({ target: plugin.target, name: plugin.name, version: plugin.version, directory, archive, files: plugin.files.size });
38
57
  }
58
+ const skills = built[0].skills;
39
59
  return {
40
60
  exitCode: ExitCode.Ok,
41
- data: { name: bundle.name, version: bundle.version, mcp_url: bundle.mcpUrl, out, skills: bundle.skills, plugins },
61
+ data: { out, skills, mcp_url: mcpUrl, plugins },
42
62
  findings: [],
43
63
  humanSummary: [
44
- `built ${bundle.name} ${bundle.version} (${bundle.skills.length} skills, server ${bundle.mcpUrl})`,
45
- ...plugins.map((p) => ` ${p.target}: ${p.archive}`),
64
+ `built ${plugins.length === 1 ? 'one plugin' : `${plugins.length} plugins`} (${skills.length} skills)`,
65
+ ...plugins.map((p) => ` ${p.target}: ${p.name} ${p.version}, ${p.directory} and ${p.archive}${p.target === 'chatgpt' && mcpUrl !== null ? ` (server ${mcpUrl})` : ''}`),
46
66
  ].join('\n'),
47
- storeRoot: store.root,
48
- schemaVersion: store.config.schema_version,
67
+ notices,
68
+ storeRoot: store?.root ?? null,
69
+ schemaVersion: store?.config.schema_version ?? null,
49
70
  };
50
71
  }
51
72
  //# sourceMappingURL=plugin-build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-build.js","sourceRoot":"","sources":["../../src/commands/plugin-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAqB,MAAM,yBAAyB,CAAC;AAExG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAE/D,qGAAqG;AACrG,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAe7D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY,EAAE,KAAuB;IAC9E,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;QAClD,UAAU,EAAE,WAAW;QACvB,MAAM,EAAE,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;KAClD,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnH,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;QACjH,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE;YACZ,SAAS,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,mBAAmB,MAAM,CAAC,MAAM,GAAG;YAClG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACrD,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin-build.js","sourceRoot":"","sources":["../../src/commands/plugin-build.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
2
  import type { RunEnv } from '../core/env.js';
3
+ import { type StoreUpdateSettings } from '../core/store-update-runner.js';
4
+ import type { StoreConfig } from '../config/schema.js';
3
5
  import type { Store } from '../core/store.js';
4
6
  import { type CredentialKind } from '../core/forge/credentials.js';
5
7
  export declare const requires: CommandRequires;
@@ -25,5 +27,6 @@ export interface ServeData {
25
27
  * caller's.
26
28
  */
27
29
  export declare const DEFAULT_HOST = "127.0.0.1";
30
+ export declare function storeUpdateSettings(config: StoreConfig): StoreUpdateSettings;
28
31
  export declare function execute(env: RunEnv, store: Store, flags: ServeFlags): Promise<CommandOutcome<ServeData>>;
29
32
  //# sourceMappingURL=serve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAS7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,0GAA0G;IAC1G,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,cAAc,CAAC;AAwUxC,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA8C9G"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAiD,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAEzH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAK9C,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,0GAA0G;IAC1G,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,cAAc,CAAC;AAoYxC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,CAI5E;AAyCD,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAkD9G"}
@@ -4,14 +4,18 @@ import path from 'node:path';
4
4
  import { DIAGRAM_SCRIPT_ROUTE, RENDERER_ROUTE_PREFIX, diagramRenderer } from '../core/browse/diagram-assets.js';
5
5
  import { buildLinkResolver } from '../core/browse/link-resolver.js';
6
6
  import { renderIndexBody, renderNav } from '../core/browse/nav.js';
7
- import { PREVIEW_ROUTE_PREFIX, PUBLISH_ROUTE_PREFIX, REVIEW_HEAD_PARAM, REVIEW_ROUTE_PREFIX } from '../core/browse/page-url.js';
7
+ import { parsePullPreviewPath, PREVIEW_ROUTE_PREFIX, PUBLISH_ROUTE_PREFIX, REVIEW_HEAD_PARAM, REVIEW_ROUTE_PREFIX } from '../core/browse/page-url.js';
8
+ import { PullPreviews } from '../core/browse/pull-preview.js';
9
+ import { hintOf, readBody, readWebhookSecret, signatureValid, WEBHOOK_ROUTE } from '../core/browse/webhook.js';
10
+ import { hardenGit } from '../core/git/hardened.js';
8
11
  import { resolveNavState, resolveTheme } from '../core/browse/preferences.js';
9
12
  import { titleFor } from '../core/catalog/model.js';
10
13
  import { escapeHtml, renderNoteBody } from '../core/browse/render.js';
11
14
  import { buildRouteTable } from '../core/browse/routes.js';
12
15
  import { readDiagramScript, readStylesheet, renderShell } from '../core/browse/templates.js';
13
16
  import { createServingState } from '../core/browse/serving-state.js';
14
- import { createLander } from '../core/approval/lander.js';
17
+ import { createStoreUpdateRunner } from '../core/store-update-runner.js';
18
+ import { serveSyncMinutes } from '../config/defaults.js';
15
19
  import { readConfig } from '../config/load.js';
16
20
  import { MIGRATION_STEPS } from '../config/migrations.js';
17
21
  import { ExitCode } from '../core/exit-codes.js';
@@ -94,7 +98,7 @@ async function readDerivedDocument(absolutePath) {
94
98
  throw err;
95
99
  }
96
100
  }
97
- async function handleRequest(holder, landing, mcp, plugins, git, stderr, req, res) {
101
+ async function handleRequest(holder, landing, mcp, plugins, git, stderr, pulls, webhookSecret, req, res) {
98
102
  // serve-follows-config-changes: one state per request, so a request never mixes two configurations.
99
103
  const { store, approval, approvalError } = await holder.current();
100
104
  landing.sync(store.config);
@@ -109,10 +113,16 @@ async function handleRequest(holder, landing, mcp, plugins, git, stderr, req, re
109
113
  }
110
114
  // context-browsing spec: the one exception to read-only is a POST to the decision route of a store that declares change approval.
111
115
  const decisionPost = method === 'POST' && (approval !== null || approvalError !== null) && isDecisionRoute(pathname);
112
- if (method !== 'GET' && method !== 'HEAD' && !decisionPost) {
116
+ // serve-keeps-its-clone-current D9: and a POST to the webhook, which exists only with a secret in the environment.
117
+ const webhookPost = method === 'POST' && webhookSecret !== null && pathname === WEBHOOK_ROUTE;
118
+ if (method !== 'GET' && method !== 'HEAD' && !decisionPost && !webhookPost) {
113
119
  send(res, method, 405, 'text/plain; charset=utf-8', 'method not allowed\n');
114
120
  return;
115
121
  }
122
+ if (webhookPost) {
123
+ await handleWebhook(store, landing, pulls, webhookSecret, stderr, req, res);
124
+ return;
125
+ }
116
126
  // serve-the-session-lifecycle-to-chat-apps D7: the plugin downloads, behind the approval routes' identity check.
117
127
  if (isPluginPath(pathname)) {
118
128
  const reply = await plugins.handle(store, approval, approvalError, req, pathname);
@@ -145,6 +155,31 @@ async function handleRequest(holder, landing, mcp, plugins, git, stderr, req, re
145
155
  send(res, method, 200, 'text/javascript; charset=utf-8', await readDiagramScript());
146
156
  return;
147
157
  }
158
+ /**
159
+ * serve-keeps-its-clone-current D6: a pull request's pages, from its head on
160
+ * the forge — byte-verbatim like `/publish/`, with no shell. Answered ahead
161
+ * of the worktree previews below, and before any read of the store's own
162
+ * checkout.
163
+ */
164
+ const pullPreview = parsePullPreviewPath(pathname);
165
+ if (pullPreview !== null) {
166
+ const answer = await pulls.answer(store, pullPreview.number, pullPreview.filePath);
167
+ if (answer.kind === 'file') {
168
+ send(res, method, 200, contentTypeFor(answer.filePath), answer.body, { 'Cache-Control': 'no-store' });
169
+ }
170
+ else if (answer.kind === 'redirect') {
171
+ res.writeHead(302, { Location: answer.location, 'Cache-Control': 'no-store', 'Content-Length': 0 });
172
+ res.end();
173
+ }
174
+ else if (answer.kind === 'unavailable') {
175
+ stderr.write(`serve: pull request preview ${pullPreview.number}: ${answer.message}\n`);
176
+ send(res, method, 503, 'text/plain; charset=utf-8', 'the pull request could not be read from the forge\n');
177
+ }
178
+ else {
179
+ send(res, method, 404, 'text/plain; charset=utf-8', 'not found\n');
180
+ }
181
+ return;
182
+ }
148
183
  const { theme, setCookie: themeSetCookie } = resolveTheme(req.headers.cookie, url.searchParams);
149
184
  const { navState, setCookie: navSetCookie } = resolveNavState(req.headers.cookie, url.searchParams);
150
185
  const headers = shellHeaders([themeSetCookie, navSetCookie]);
@@ -168,7 +203,7 @@ async function handleRequest(holder, landing, mcp, plugins, git, stderr, req, re
168
203
  send(res, method, reply.status, reply.contentType, reply.body, replyHeaders);
169
204
  // After the response: the decider's redirect never waits on a landing run.
170
205
  if (reply.landingRequested === true)
171
- landing.trigger();
206
+ landing.triggerLanding();
172
207
  return;
173
208
  }
174
209
  const table = await buildRouteTable(store);
@@ -249,6 +284,44 @@ async function handleRequest(holder, landing, mcp, plugins, git, stderr, req, re
249
284
  }
250
285
  send(res, method, 404, 'text/plain; charset=utf-8', 'not found\n');
251
286
  }
287
+ /**
288
+ * context-browsing spec ("Only a signed forge delivery reaches the webhook";
289
+ * "A verified push brings the server up to date at once"): a delivery whose
290
+ * signature does not verify is answered 401 and does nothing. A verified one
291
+ * is answered 202 first; then a push to the default branch starts a
292
+ * store-update run (coalesced with one in progress), and a push to another
293
+ * branch fetches it for its pull request's preview. Nothing else in the
294
+ * delivery is used.
295
+ */
296
+ async function handleWebhook(store, landing, pulls, secret, stderr, req, res) {
297
+ const body = await readBody(req);
298
+ if (body === null) {
299
+ send(res, 'POST', 413, 'text/plain; charset=utf-8', 'delivery too large\n');
300
+ return;
301
+ }
302
+ if (!signatureValid(secret, body, req.headers['x-hub-signature-256'])) {
303
+ stderr.write('serve: webhook: a delivery without a valid signature was refused\n');
304
+ send(res, 'POST', 401, 'text/plain; charset=utf-8', 'signature does not verify\n');
305
+ return;
306
+ }
307
+ const hint = hintOf(req.headers['x-github-event'], body, store.config.git.default_branch);
308
+ send(res, 'POST', 202, 'text/plain; charset=utf-8', hint.kind === 'ignored' ? `ignored: ${hint.reason}\n` : 'accepted\n');
309
+ if (hint.kind === 'default-branch') {
310
+ stderr.write(`serve: webhook: ${store.config.git.default_branch} changed${hint.repository === null ? '' : ` on ${hint.repository}`}; starting a store-update run\n`);
311
+ landing.trigger();
312
+ }
313
+ else if (hint.kind === 'branch') {
314
+ stderr.write(`serve: webhook: ${hint.branch} changed${hint.repository === null ? '' : ` on ${hint.repository}`}; fetching it for its preview\n`);
315
+ try {
316
+ const fetched = await pulls.prefetchBranch(store, hint.branch);
317
+ if (fetched.length > 0)
318
+ stderr.write(`serve: webhook: fetched pull request ${fetched.map((n) => `#${n}`).join(', ')}\n`);
319
+ }
320
+ catch (err) {
321
+ stderr.write(`serve: webhook: ${hint.branch} could not be fetched: ${err instanceof Error ? err.message : String(err)}\n`);
322
+ }
323
+ }
324
+ }
252
325
  /**
253
326
  * cli-contract spec (local-browsing-surface D5): resolves the moment the
254
327
  * listener is ready, so `runCommand()` emits exactly one envelope before
@@ -289,35 +362,58 @@ async function approvalServer(env, store) {
289
362
  forgeFor: storeForges(env),
290
363
  env: env.env,
291
364
  verifier: createIdentityVerifier(approval.identity),
292
- git: env.git,
365
+ // It fetches into the shared clone and its mounts, and renders diffs, next to the App key: no repository hooks or drivers.
366
+ git: hardenGit(env.git),
293
367
  now: () => env.now(),
294
368
  };
295
369
  }
296
- function createLandingControl(env, root) {
297
- let lander = null;
370
+ export function storeUpdateSettings(config) {
371
+ const landing = config.change_approval !== undefined && config.change_approval.land !== 'manual';
372
+ const kind = landing ? 'land' : 'sync';
373
+ return { kind, intervalMs: serveSyncMinutes(config) * 60 * 1000 };
374
+ }
375
+ function createStoreUpdateControl(env, initial, root) {
298
376
  // Exactly the command a person would run: this Node binary and this CLI's entry script.
299
377
  const command = [env.execPath, process.argv[1]];
378
+ const runner = createStoreUpdateRunner({ command, root, env: env.env, output: env.io.stderr, ...storeUpdateSettings(initial) });
300
379
  return {
301
380
  sync(config) {
302
- const wanted = config.change_approval !== undefined && config.change_approval.land !== 'manual';
303
- if (wanted && lander === null)
304
- lander = createLander({ command, root, env: env.env, output: env.io.stderr });
305
- if (!wanted && lander !== null) {
306
- void lander.stop();
307
- lander = null;
308
- }
381
+ runner.configure(storeUpdateSettings(config));
309
382
  },
310
383
  trigger() {
311
- lander?.trigger();
384
+ runner.trigger();
312
385
  },
313
- async stop() {
314
- await lander?.stop();
315
- lander = null;
386
+ triggerLanding() {
387
+ if (runner.kind() === 'land')
388
+ runner.trigger();
389
+ },
390
+ stop() {
391
+ return runner.stop();
316
392
  },
317
393
  };
318
394
  }
395
+ /**
396
+ * The store's own forge client and credential, for pull request previews and
397
+ * the webhook: formed once, on first use, so a store that never opens a
398
+ * preview never needs a forge credential. A failure is not remembered, so a
399
+ * credential fixed in the environment's files is picked up on the next try.
400
+ */
401
+ function storeForge(env) {
402
+ let formed = null;
403
+ return (store) => {
404
+ formed ??= credentialsFor(env, store.root)
405
+ .then((credentials) => ({ forge: createGhForgeClient(store.root, credentials), credentials }))
406
+ .catch((err) => {
407
+ formed = null;
408
+ throw err;
409
+ });
410
+ return formed;
411
+ };
412
+ }
319
413
  export async function execute(env, store, flags) {
320
414
  // Startup still fails fast on a recording-login mismatch or an unreachable forge; only later changes degrade.
415
+ // An ambiguous or unreadable webhook secret fails it too: a store that asked for the webhook should not run without it.
416
+ const webhookSecret = await readWebhookSecret(env.env);
321
417
  const approval = await approvalServer(env, store);
322
418
  const holder = await createServingState({
323
419
  initial: store,
@@ -326,18 +422,20 @@ export async function execute(env, store, flags) {
326
422
  buildApproval: (next) => approvalServer(env, next),
327
423
  log: (line) => env.io.stderr.write(`${line}\n`),
328
424
  });
329
- const landing = createLandingControl(env, store.root);
425
+ const landing = createStoreUpdateControl(env, store.config, store.root);
330
426
  const mcp = new McpSurface({ git: env.git, canonicalRoot: store.root, env: env.env, now: () => env.now(), log: (line) => env.io.stderr.write(`${line}\n`) });
331
427
  const plugins = new PluginDownloads(env.git);
332
- landing.sync(store.config);
333
- // Stopping serve stops a landing run in progress; landing is resumable, so the next start finishes it.
428
+ // Routes run git in the clone the agent shares (diffs, logs): no repository hooks or drivers there either.
429
+ const routeGit = hardenGit(env.git);
430
+ const pulls = new PullPreviews({ git: hardenGit(env.git), env: env.env, now: () => env.now(), forgeFor: storeForge(env) });
431
+ // Stopping serve stops a store-update run in progress; landing and syncing are resumable, so the next start finishes it.
334
432
  const shutdown = (signal) => {
335
433
  void landing.stop().finally(() => process.exit(signal === 'SIGINT' ? 130 : 143));
336
434
  };
337
435
  process.once('SIGTERM', shutdown);
338
436
  process.once('SIGINT', shutdown);
339
437
  const server = createServer((req, res) => {
340
- handleRequest(holder, landing, mcp, plugins, env.git, env.io.stderr, req, res).catch((err) => {
438
+ handleRequest(holder, landing, mcp, plugins, routeGit, env.io.stderr, pulls, webhookSecret, req, res).catch((err) => {
341
439
  env.io.stderr.write(`serve: ${err instanceof Error ? err.message : String(err)}\n`);
342
440
  if (!res.headersSent)
343
441
  send(res, req.method ?? 'GET', 500, 'text/plain; charset=utf-8', 'internal error\n');
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-submit.d.ts","sourceRoot":"","sources":["../../src/commands/session-submit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAyB1H"}
1
+ {"version":3,"file":"session-submit.d.ts","sourceRoot":"","sources":["../../src/commands/session-submit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CA0B1H"}
@@ -30,6 +30,8 @@ export async function execute(env, store, opts) {
30
30
  const lines = [`Pull request #${result.pull_request.number} (${result.steps.pull_request}) for "${result.branch}": ${result.pull_request.url}`];
31
31
  if (result.approval_url !== null)
32
32
  lines.push(`Approval page: ${result.approval_url}`);
33
+ if (result.preview_url !== null)
34
+ lines.push(`Pages preview at: ${result.preview_url}`);
33
35
  return {
34
36
  exitCode: ExitCode.Ok,
35
37
  data: result,
@@ -1 +1 @@
1
- {"version":3,"file":"session-submit.js","sourceRoot":"","sources":["../../src/commands/session-submit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAqB,MAAM,2BAA2B,CAAC;AAG3F,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAW/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY,EAAE,IAA0B;IACjF,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,uEAAuE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjK,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAS,CAAC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE;QACpH,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,iBAAiB,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;IAChJ,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACtF,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"session-submit.js","sourceRoot":"","sources":["../../src/commands/session-submit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAqB,MAAM,2BAA2B,CAAC;AAG3F,MAAM,CAAC,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAW/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,KAAY,EAAE,IAA0B;IACjF,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,uEAAuE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACjK,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAS,CAAC,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/F,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE;QACpH,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,iBAAiB,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;IAChJ,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACrB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;KAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { CommandOutcome, CommandRequires } from '../core/command.js';
2
+ import type { RunEnv } from '../core/env.js';
3
+ import { type CredentialKind } from '../core/forge/credentials.js';
4
+ import { type FastForwardOutcome } from '../core/git/fast-forward.js';
5
+ import type { Store } from '../core/store.js';
6
+ import * as sharedStoresSyncCommand from './shared-stores-sync.js';
7
+ export declare const requires: CommandRequires;
8
+ export interface SyncFlags {
9
+ /** `--every <minutes>`: keep running, a round every this many minutes, mounts included. */
10
+ every?: number;
11
+ }
12
+ export interface SyncData {
13
+ /** Which kind of forge credential the fetch used; never the credential. */
14
+ credential: CredentialKind | null;
15
+ /** The canonical sync, reported as `ctxr land` reports it; null when another landing held the lock. */
16
+ canonical_sync: FastForwardOutcome | null;
17
+ /** `--every` only: the minutes between rounds. */
18
+ every_minutes?: number;
19
+ /** `--every` only: the first round's mount refresh, as `ctxr shared-stores sync` reports it. */
20
+ mounts?: sharedStoresSyncCommand.MountSyncResult[];
21
+ }
22
+ export interface RoundReport {
23
+ /** True when the round failed: the fetch, a mount, or the configuration could not be read. */
24
+ failed: boolean;
25
+ lines: string[];
26
+ canonical: FastForwardOutcome | null;
27
+ credential: CredentialKind | null;
28
+ mounts: sharedStoresSyncCommand.MountSyncResult[];
29
+ }
30
+ /**
31
+ * One round of `ctxr sync --every`: the canonical sync, then the mounts as
32
+ * `ctxr shared-stores sync` refreshes them. The configuration is read again
33
+ * each round, so a mount declared after the loop started is cloned on the
34
+ * next round.
35
+ */
36
+ export declare function syncRound(env: RunEnv, root: string): Promise<RoundReport>;
37
+ export interface SyncLoop {
38
+ /** Resolves once the round in progress, if any, has ended; no round starts after. */
39
+ stop(): Promise<void>;
40
+ }
41
+ /**
42
+ * write-lifecycle spec ("The canonical-clone sync can keep running, mounts
43
+ * included"): a round every `intervalMs` after the previous round ended, so
44
+ * two rounds never overlap. Each round's report goes to `write`; a failed
45
+ * round is reported and the next one still runs. The pending timer keeps the
46
+ * process alive, so the loop runs until the process is stopped.
47
+ */
48
+ export declare function startSyncLoop(env: RunEnv, root: string, intervalMs: number, write: (line: string) => void, firstDelayMs?: number): SyncLoop;
49
+ export declare function execute(callerEnv: RunEnv, store: Store, flags?: SyncFlags): Promise<CommandOutcome<SyncData>>;
50
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAI1F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,uBAAuB,MAAM,yBAAyB,CAAC;AAEnE,eAAO,MAAM,QAAQ,EAAE,eAAuC,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,uGAAuG;IACvG,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,MAAM,CAAC,EAAE,uBAAuB,CAAC,eAAe,EAAE,CAAC;CACpD;AA0ED,MAAM,WAAW,WAAW;IAC1B,8FAA8F;IAC9F,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,uBAAuB,CAAC,eAAe,EAAE,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoC/E;AAED,MAAM,WAAW,QAAQ;IACvB,qFAAqF;IACrF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,YAAY,SAAa,GAAG,QAAQ,CAgC/I;AAiBD,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,SAAc,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAMvH"}