@scribe-platform/cli 0.7.0 → 0.8.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 (46) hide show
  1. package/dist/commands/login.d.ts.map +1 -1
  2. package/dist/commands/login.js +15 -1
  3. package/dist/commands/login.js.map +1 -1
  4. package/dist/commands/prospect.d.ts +27 -0
  5. package/dist/commands/prospect.d.ts.map +1 -0
  6. package/dist/commands/prospect.js +213 -0
  7. package/dist/commands/prospect.js.map +1 -0
  8. package/dist/commands/request.d.ts +38 -0
  9. package/dist/commands/request.d.ts.map +1 -0
  10. package/dist/commands/request.js +214 -0
  11. package/dist/commands/request.js.map +1 -0
  12. package/dist/commands/site.d.ts +11 -0
  13. package/dist/commands/site.d.ts.map +1 -1
  14. package/dist/commands/site.js +41 -3
  15. package/dist/commands/site.js.map +1 -1
  16. package/dist/commands/update.d.ts +10 -0
  17. package/dist/commands/update.d.ts.map +1 -1
  18. package/dist/commands/update.js +128 -31
  19. package/dist/commands/update.js.map +1 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +4 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/lib/claude-hook.d.ts +74 -0
  24. package/dist/lib/claude-hook.d.ts.map +1 -0
  25. package/dist/lib/claude-hook.js +108 -0
  26. package/dist/lib/claude-hook.js.map +1 -0
  27. package/dist/lib/client.d.ts +182 -0
  28. package/dist/lib/client.d.ts.map +1 -1
  29. package/dist/lib/client.js +82 -0
  30. package/dist/lib/client.js.map +1 -1
  31. package/dist/lib/skill.d.ts +13 -0
  32. package/dist/lib/skill.d.ts.map +1 -1
  33. package/dist/lib/skill.js +33 -2
  34. package/dist/lib/skill.js.map +1 -1
  35. package/dist/lib/update-check.d.ts +46 -0
  36. package/dist/lib/update-check.d.ts.map +1 -0
  37. package/dist/lib/update-check.js +103 -0
  38. package/dist/lib/update-check.js.map +1 -0
  39. package/package.json +1 -1
  40. package/skills/scribe-site-builder/SKILL.md +155 -33
  41. package/skills/scribe-site-builder/recipes/README.md +10 -3
  42. package/skills/scribe-site-builder/recipes/domains.md +151 -0
  43. package/skills/scribe-site-builder/recipes/forms.md +5 -2
  44. package/skills/scribe-site-builder/recipes/prospects.md +192 -0
  45. package/skills/scribe-site-builder/recipes/requests.md +145 -0
  46. package/skills/scribe-site-builder/recipes/schema.md +24 -0
@@ -35,6 +35,20 @@ function printDnsRecords(records, write = console.error) {
35
35
  }
36
36
  write('In Cloudflare the record must be DNS-only (grey cloud), not proxied.\n');
37
37
  }
38
+ /**
39
+ * True when changing a Site's stored domain to `next` would be a **cutover**
40
+ * rather than a correction — i.e. the Site is still on its provisional
41
+ * `<owner>.github.io` Pages host and is being moved to a real hostname.
42
+ *
43
+ * `site update --domain` only rewrites the Mongo record and the Turnstile
44
+ * widget. It does not touch DNS, `public/CNAME`, or the repo's Pages settings,
45
+ * so using it for a cutover leaves the Site claiming a domain that serves
46
+ * nothing — the half-state `site promote` exists to prevent.
47
+ */
48
+ export function isDomainCutover(current, next, githubOwner) {
49
+ const pagesHost = `${githubOwner}.github.io`.toLowerCase();
50
+ return current.toLowerCase() === pagesHost && next.toLowerCase() !== pagesHost;
51
+ }
38
52
  export function registerSiteCommands(program) {
39
53
  const site = program.command('site').description('Manage sites');
40
54
  site
@@ -51,7 +65,7 @@ export function registerSiteCommands(program) {
51
65
  .command('add')
52
66
  .description('Provision a new site: create its GitHub repo, push a starter template, and register it')
53
67
  .requiredOption('--slug <slug>', 'Site slug (also used as the repo name)')
54
- .option('--domain <domain>', 'Site domain (defaults to the GitHub Pages host — set the real one later with `scribe site update --domain`)')
68
+ .option('--domain <domain>', 'Site domain (defaults to the GitHub Pages host — take the site live on the real one later with `scribe site promote`)')
55
69
  .option('--turnstile-key <key>', 'Cloudflare Turnstile site key (defaults to the server-configured shared widget)')
56
70
  .option('--name <name>', 'Display name (defaults to the slug)')
57
71
  .option('--form-collection <name>', 'Name for the default form/inbox collection (defaults to "inquiries")')
@@ -71,10 +85,11 @@ export function registerSiteCommands(program) {
71
85
  }));
72
86
  site
73
87
  .command('update')
74
- .description("Update a site's settings: its domain and/or Turnstile site key")
88
+ .description("Correct a site's stored settings: its domain and/or Turnstile site key")
75
89
  .argument('<slug>', 'Site slug')
76
90
  .option('--turnstile-key <key>', 'Cloudflare Turnstile site key')
77
- .option('--domain <domain>', "The site's public hostname, e.g. example.com — also synced to the Turnstile widget")
91
+ .option('--domain <domain>', "Correct the site's stored hostname (record + Turnstile only). To take a site live on a new domain use `scribe site promote`")
92
+ .option('--record-only', 'Allow --domain to move a site off its github.io host without doing the cutover')
78
93
  .action(runAction(async (slug, opts) => {
79
94
  if (!opts.turnstileKey && !opts.domain) {
80
95
  console.error('Nothing to update — pass --turnstile-key and/or --domain.');
@@ -82,6 +97,29 @@ export function registerSiteCommands(program) {
82
97
  return;
83
98
  }
84
99
  const client = requireClient();
100
+ // A cutover reached through `update` is the classic half-move: the
101
+ // record names a domain that DNS, Pages and `public/CNAME` know
102
+ // nothing about, so the site 404s on the new host while still
103
+ // reporting healthy. Refuse rather than warn — a warning on stderr is
104
+ // exactly what gets scrolled past.
105
+ if (opts.domain && !opts.recordOnly) {
106
+ const existing = await client
107
+ .listSites()
108
+ .then((sites) => sites.find((s) => s.slug === slug))
109
+ // A lookup failure shouldn't block a legitimate correction.
110
+ .catch(() => undefined);
111
+ if (existing && isDomainCutover(existing.domain, opts.domain, existing.githubOwner)) {
112
+ console.error(`"${slug}" is still on ${existing.domain}, so this is a cutover, not a correction.`);
113
+ console.error('`site update --domain` changes only the stored record and the Turnstile widget —');
114
+ console.error('it does not touch DNS, public/CNAME, or the repo\'s GitHub Pages settings, so the');
115
+ console.error('site would 404 on the new domain. Use promote instead, which does all of it:\n');
116
+ console.error(` scribe site promote ${slug} --domain ${opts.domain} --dns-only # check DNS, change nothing`);
117
+ console.error(` scribe site promote ${slug} --domain ${opts.domain} # cut over\n`);
118
+ console.error('Pass --record-only if you really do just want to rewrite the stored value.');
119
+ process.exitCode = 1;
120
+ throw new CliExit();
121
+ }
122
+ }
85
123
  const result = await client.updateSite(slug, {
86
124
  turnstileSiteKey: opts.turnstileKey,
87
125
  domain: opts.domain,
@@ -1 +1 @@
1
- {"version":3,"file":"site.js","sourceRoot":"","sources":["../../src/commands/site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site.js","sourceRoot":"","sources":["../../src/commands/site.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
1
  import { Command } from 'commander';
2
+ import { installSkill } from '../lib/skill.js';
3
+ export interface UpdateOutcome {
4
+ before: string | null;
5
+ after: string | null;
6
+ /** Null when the skill step didn't run because the install failed first. */
7
+ skill: ReturnType<typeof installSkill> | null;
8
+ ok: boolean;
9
+ /** One line per thing that went wrong, written to be read without context. */
10
+ problems: string[];
11
+ }
2
12
  export declare function registerUpdateCommand(program: Command): void;
3
13
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoD5D"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAW,MAAM,iBAAiB,CAAC;AA6CxD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,4EAA4E;IAC5E,KAAK,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,GAAG,IAAI,CAAC;IAC9C,EAAE,EAAE,OAAO,CAAC;IACZ,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAsDD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwE5D"}
@@ -3,8 +3,9 @@ import { readFileSync, realpathSync } from 'node:fs';
3
3
  import { dirname, join, resolve, sep } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { CliExit, runAction } from '../lib/cli-utils.js';
6
+ import { reportHookInstall } from '../lib/claude-hook.js';
6
7
  import { installSkill, tildify } from '../lib/skill.js';
7
- const PACKAGE_NAME = '@scribe-platform/cli';
8
+ import { checkForUpdate, installSpec, PACKAGE_NAME } from '../lib/update-check.js';
8
9
  /** This install's own package root — `<global npm root>/@scribe-platform/cli` when installed globally. */
9
10
  function packageRoot() {
10
11
  return resolve(dirname(fileURLToPath(import.meta.url)), '..', '..');
@@ -45,49 +46,145 @@ function isGlobalInstall(root) {
45
46
  const globalRoot = real(result.stdout.trim());
46
47
  return real(root).startsWith(globalRoot + sep);
47
48
  }
49
+ /**
50
+ * Installs the newest CLI and the skill that ships with it.
51
+ *
52
+ * Shared by `scribe update` (someone asked) and `scribe session-start` (the
53
+ * hook noticed), which differ only in how they report — so the thing that has
54
+ * to be right, the order of the two installs, is written once.
55
+ */
56
+ function runUpdate({ log, quiet = false }) {
57
+ const root = packageRoot();
58
+ const before = installedVersion(root);
59
+ const problems = [];
60
+ if (!isGlobalInstall(root)) {
61
+ problems.push(`This scribe isn't a global npm install — it's running from ${root}. ` +
62
+ `Update it the way it was installed; for a normal install that is \`npm install -g ${PACKAGE_NAME}@latest\`.`);
63
+ return { before, after: before, skill: null, ok: false, problems };
64
+ }
65
+ const spec = installSpec();
66
+ log(`Updating ${PACKAGE_NAME}${before ? ` (currently ${before})` : ''}...`);
67
+ // `inherit` lets npm draw its own progress for someone watching `scribe
68
+ // update`. Under the hook it must be piped instead: stdout there is the
69
+ // JSON channel Claude Code parses, and npm's "changed 2 packages in 485ms"
70
+ // lands in front of the payload and corrupts it.
71
+ const install = npm(['install', '-g', spec], !quiet);
72
+ if (install.status !== 0) {
73
+ problems.push(`\`npm install -g ${spec}\` failed. If that was a permission error (EACCES), ` +
74
+ "fix npm's global prefix or re-run it with sudo.");
75
+ return { before, after: before, skill: null, ok: false, problems };
76
+ }
77
+ // npm has replaced this package's files in place. The code already running
78
+ // is the old version, but everything below reads from disk, so the skill
79
+ // installed is the one that ships with the version just fetched.
80
+ const after = installedVersion(root);
81
+ const skill = installSkill();
82
+ if (skill.status === 'missing-source') {
83
+ problems.push("The CLI updated, but its bundled skill wasn't where this version expected it. " +
84
+ 'Run `scribe update` once more — the newer code knows where to look.');
85
+ return { before, after, skill, ok: false, problems };
86
+ }
87
+ return { before, after, skill, ok: true, problems };
88
+ }
48
89
  export function registerUpdateCommand(program) {
49
90
  program
50
91
  .command('update')
51
92
  // Aliased because `scribe site update` already exists: someone reaching for
52
93
  // "upgrade the tool" shouldn't hit a dead end over which word we chose.
53
94
  .alias('upgrade')
54
- .description('Update the scribe CLI and the Claude Code skill that ships with it')
55
- .action(runAction(async () => {
56
- const root = packageRoot();
57
- if (!isGlobalInstall(root)) {
58
- console.error(`This scribe isn't a global npm install — it's running from ${root}.`);
59
- console.error('Update it the way it was installed. For a normal install that is:');
60
- console.error(` npm install -g ${PACKAGE_NAME}@latest`);
61
- process.exitCode = 1;
62
- throw new CliExit();
95
+ .description('Update the scribe CLI and the Claude Code skill that ships with it. ' +
96
+ 'Usually unnecessary: a session-start hook, installed by `scribe login`, does this ' +
97
+ 'at the start of every Claude Code session.')
98
+ .option('--check', 'Report whether a newer version exists and exit, changing nothing')
99
+ .option('--install-hook', 'Re-install the session-start auto-update hook and exit (repair; `scribe login` does it)')
100
+ .action(runAction(async (opts) => {
101
+ const current = installedVersion(packageRoot()) ?? '0.0.0';
102
+ if (opts.installHook) {
103
+ reportHookInstall();
104
+ return;
63
105
  }
64
- const before = installedVersion(root);
65
- console.log(`Updating ${PACKAGE_NAME}${before ? ` (currently ${before})` : ''}...`);
66
- const install = npm(['install', '-g', `${PACKAGE_NAME}@latest`], true);
67
- if (install.status !== 0) {
68
- console.error(`\nnpm install -g ${PACKAGE_NAME}@latest failed.`);
69
- console.error("If that was a permission error (EACCES), fix npm's global prefix or re-run it with sudo.");
106
+ if (opts.check) {
107
+ const check = await checkForUpdate(current);
108
+ if (!check.reachable) {
109
+ console.log(`Couldn't reach the npm registry. Running ${current}.`);
110
+ return;
111
+ }
112
+ console.log(check.updateAvailable
113
+ ? `Update available: ${current} → ${check.latest}. Run \`scribe update\`.`
114
+ : `Up to date (${current}).`);
115
+ return;
116
+ }
117
+ const outcome = runUpdate({ log: (line) => console.log(line) });
118
+ for (const problem of outcome.problems)
119
+ console.error(problem);
120
+ if (!outcome.ok) {
70
121
  process.exitCode = 1;
71
122
  throw new CliExit();
72
123
  }
73
- // npm has replaced this package's files in place. The code already
74
- // running is the old version, but everything below reads from disk, so
75
- // the skill installed is the one that ships with the new version.
76
- const after = installedVersion(root);
77
- console.log(after && after !== before ? `\nUpdated to ${after}.` : `\nAlready on the latest version${after ? ` (${after})` : ''}.`);
78
- const skill = installSkill();
79
- if (skill.status === 'missing-source') {
80
- console.error("The CLI updated, but its bundled skill wasn't where this version expected it.");
81
- console.error('Run `scribe update` once more — the newer code knows where to look.');
82
- process.exitCode = 1;
83
- return;
124
+ console.log(outcome.after && outcome.after !== outcome.before
125
+ ? `\nUpdated to ${outcome.after}.`
126
+ : `\nAlready on the latest version${outcome.after ? ` (${outcome.after})` : ''}.`);
127
+ if (outcome.skill?.status === 'symlink') {
128
+ console.log(`Skill: left ${tildify(outcome.skill.dest)} alone — it's a symlink into a checkout.`);
84
129
  }
85
- if (skill.status === 'symlink') {
86
- console.log(`Skill: left ${tildify(skill.dest)} alone — it's a symlink into a checkout.`);
87
- return;
130
+ else if (outcome.skill?.status === 'installed') {
131
+ console.log(`Skill: installed scribe-site-builder to ${tildify(outcome.skill.dest)}.`);
88
132
  }
89
- console.log(`Skill: installed scribe-site-builder to ${tildify(skill.dest)}.`);
133
+ reportHookInstall();
90
134
  console.log('\nRestart Claude Code so it picks up the updated skill.');
91
135
  }));
136
+ program
137
+ // `hidden` on the command, not `configureHelp` on it — that only governs
138
+ // this subcommand's own `--help`, which is not where it was showing up.
139
+ // It's the hook's entry point, not something to run by hand, and listing
140
+ // it invites someone to try it and get a line of JSON back.
141
+ .command('session-start', { hidden: true })
142
+ .description('Internal — the Claude Code SessionStart hook that keeps the CLI and skill current')
143
+ .action(runAction(async () => {
144
+ await runSessionStart();
145
+ }));
146
+ }
147
+ /**
148
+ * The SessionStart hook.
149
+ *
150
+ * Runs before Claude Code has scanned skills for the new session, which is the
151
+ * whole design: an update applied here is in place by the time anyone types,
152
+ * so the stale-skill problem a mid-session update creates never arises.
153
+ *
154
+ * Writes a Claude Code hook JSON object to stdout and **always exits 0**. A
155
+ * hook that fails loudly, or at all, blocks the start of a conversation that
156
+ * has nothing to do with updating — so every failure path here degrades to
157
+ * either a note in the context or silence.
158
+ */
159
+ async function runSessionStart() {
160
+ const context = [];
161
+ try {
162
+ const current = installedVersion(packageRoot()) ?? '0.0.0';
163
+ const check = await checkForUpdate(current);
164
+ if (check.updateAvailable && check.latest) {
165
+ // Nothing is logged to stdout during the install: stdout is the hook's
166
+ // JSON channel, and npm's own output would corrupt it. `runUpdate` logs
167
+ // through this sink, which drops it.
168
+ const outcome = runUpdate({ log: () => { }, quiet: true });
169
+ if (outcome.ok && outcome.after && outcome.after !== outcome.before) {
170
+ context.push(`The Scribe CLI was updated from ${outcome.before} to ${outcome.after} just now, ` +
171
+ 'before this session started, so this session already has the new CLI and the new skill. ' +
172
+ 'Nothing needs doing and this is not worth mentioning unless asked.');
173
+ }
174
+ else if (!outcome.ok) {
175
+ context.push(`A Scribe CLI update (${current} → ${check.latest}) is available but could not be installed automatically: ` +
176
+ `${outcome.problems.join(' ')} Tell Dave — Ashley should not be asked to fix an npm install.`);
177
+ }
178
+ }
179
+ }
180
+ catch (err) {
181
+ // Belt and braces. Nothing above is supposed to throw, and a session start
182
+ // is not the place to find out otherwise.
183
+ context.push(`The Scribe CLI update check failed to run (${err.message}). Not a problem to act on.`);
184
+ }
185
+ const payload = context.length > 0
186
+ ? { hookSpecificOutput: { hookEventName: 'SessionStart', additionalContext: context.join(' ') } }
187
+ : {};
188
+ process.stdout.write(`${JSON.stringify(payload)}\n`);
92
189
  }
93
190
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAE5C,0GAA0G;AAC1G,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,kGAAkG;AAClG,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAyB,CAAC;QAClG,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,IAAc,EAAE,OAAgB;IAC3C,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;QAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QACnC,QAAQ,EAAE,OAAO;QACjB,gFAAgF;QAChF,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;KACpC,CAAC,CAAC;AACL,CAAC;AAED,6GAA6G;AAC7G,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE3E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE;QACpC,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;QAClB,4EAA4E;QAC5E,wEAAwE;SACvE,KAAK,CAAC,SAAS,CAAC;SAChB,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CACL,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;QAE3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,8DAA8D,IAAI,GAAG,CAAC,CAAC;YACrF,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,SAAS,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,YAAY,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEpF,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,YAAY,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,iBAAiB,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;YAC1G,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,CAAC;QAED,mEAAmE;QACnE,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,KAAK,GAAG,CAAC,CAAC,CAAC,kCAAkC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEpI,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;YAC/F,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC,CAAC,CACH,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEnF,0GAA0G;AAC1G,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,kGAAkG;AAClG,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAyB,CAAC;QAClG,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CAAC,IAAc,EAAE,OAAgB;IAC3C,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;QAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QACnC,QAAQ,EAAE,OAAO;QACjB,gFAAgF;QAChF,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;KACpC,CAAC,CAAC;AACL,CAAC;AAED,6GAA6G;AAC7G,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE3E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE;QACpC,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;AACjD,CAAC;AAYD;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,EAAoD;IACzF,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CACX,8DAA8D,IAAI,IAAI;YACpE,qFAAqF,YAAY,YAAY,CAChH,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,GAAG,CAAC,YAAY,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAE5E,wEAAwE;IACxE,wEAAwE;IACxE,2EAA2E;IAC3E,iDAAiD;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CACX,oBAAoB,IAAI,sDAAsD;YAC5E,iDAAiD,CACpD,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACrE,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CACX,gFAAgF;YAC9E,qEAAqE,CACxE,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;QAClB,4EAA4E;QAC5E,wEAAwE;SACvE,KAAK,CAAC,SAAS,CAAC;SAChB,WAAW,CACV,sEAAsE;QACpE,oFAAoF;QACpF,4CAA4C,CAC/C;SACA,MAAM,CAAC,SAAS,EAAE,kEAAkE,CAAC;SACrF,MAAM,CAAC,gBAAgB,EAAE,yFAAyF,CAAC;SACnH,MAAM,CACL,SAAS,CAAC,KAAK,EAAE,IAAgD,EAAE,EAAE;QACnE,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC;QAE3D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,iBAAiB,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,4CAA4C,OAAO,GAAG,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,eAAe;gBACnB,CAAC,CAAC,qBAAqB,OAAO,MAAM,KAAK,CAAC,MAAM,0BAA0B;gBAC1E,CAAC,CAAC,eAAe,OAAO,IAAI,CAC/B,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,CAAC;QAED,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM;YAC/C,CAAC,CAAC,gBAAgB,OAAO,CAAC,KAAK,GAAG;YAClC,CAAC,CAAC,kCAAkC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CACpF,CAAC;QAEF,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACpG,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,2CAA2C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzF,CAAC;QAED,iBAAiB,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO;QACL,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,4DAA4D;SAC3D,OAAO,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC1C,WAAW,CAAC,mFAAmF,CAAC;SAChG,MAAM,CACL,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC,CAAC,CACH,CAAC;AACN,CAAC;AAGD;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,eAAe;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1C,uEAAuE;YACvE,wEAAwE;YACxE,qCAAqC;YACrC,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1D,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpE,OAAO,CAAC,IAAI,CACV,mCAAmC,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,KAAK,aAAa;oBAChF,0FAA0F;oBAC1F,oEAAoE,CACvE,CAAC;YACJ,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CACV,wBAAwB,OAAO,MAAM,KAAK,CAAC,MAAM,2DAA2D;oBAC1G,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,gEAAgE,CAChG,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2EAA2E;QAC3E,0CAA0C;QAC1C,OAAO,CAAC,IAAI,CAAC,8CAA+C,GAAa,CAAC,OAAO,6BAA6B,CAAC,CAAC;IAClH,CAAC;IAED,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;QACjG,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,aAAa,IAAI,OAAO,CAgBvC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,aAAa,IAAI,OAAO,CAkBvC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -4,6 +4,8 @@ import { registerLoginCommand } from './commands/login.js';
4
4
  import { registerSiteCommands } from './commands/site.js';
5
5
  import { registerContentCommands } from './commands/content.js';
6
6
  import { registerSubmissionCommands } from './commands/submission.js';
7
+ import { registerProspectCommands } from './commands/prospect.js';
8
+ import { registerRequestCommands } from './commands/request.js';
7
9
  import { registerSchemaCommands } from './commands/schema.js';
8
10
  import { registerBuildCommands } from './commands/build.js';
9
11
  import { registerUpdateCommand } from './commands/update.js';
@@ -21,6 +23,8 @@ export function createProgram() {
21
23
  registerSiteCommands(program);
22
24
  registerContentCommands(program);
23
25
  registerSubmissionCommands(program);
26
+ registerProspectCommands(program);
27
+ registerRequestCommands(program);
24
28
  registerSchemaCommands(program);
25
29
  registerBuildCommands(program);
26
30
  registerUpdateCommand(program);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAC5C,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,uCAAuC,CAAC;SACpD,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAC5C,CAAC;AAEzB,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,uCAAuC,CAAC;SACpD,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Stamped on the hook this installs so a later version can find its own entry
3
+ * and replace it, instead of appending a second copy every time someone runs
4
+ * `scribe update`.
5
+ */
6
+ export declare const HOOK_MARKER = "# scribe-managed-hook";
7
+ /** What the hook runs. `scribe` resolves off PATH, same as the user's own shell. */
8
+ export declare const HOOK_COMMAND = "scribe session-start # scribe-managed-hook";
9
+ export declare function settingsPath(): string;
10
+ interface HookCommand {
11
+ type?: string;
12
+ command?: string;
13
+ timeout?: number;
14
+ }
15
+ interface HookEntry {
16
+ matcher?: string;
17
+ hooks?: HookCommand[];
18
+ }
19
+ type Settings = {
20
+ hooks?: Record<string, HookEntry[]>;
21
+ } & Record<string, unknown>;
22
+ /**
23
+ * Adds (or refreshes) the SessionStart hook in a parsed settings object.
24
+ *
25
+ * Pure and exported so the merge is testable without touching a real
26
+ * `~/.claude/settings.json` — the one file in this whole feature where getting
27
+ * it wrong costs someone their editor configuration.
28
+ *
29
+ * Every other hook, including other `SessionStart` entries, is preserved
30
+ * untouched. This machine already runs four unrelated SessionStart hooks from
31
+ * three different tools; appending blindly or rewriting the array wholesale
32
+ * would break them.
33
+ *
34
+ * No `timeout` is set. Claude Code's own hooks disagree about the unit in
35
+ * practice — settings on this machine carry both `10` and `8000` for what is
36
+ * nominally the same field — so rather than guess and risk either a 60ms cap
37
+ * or a 60,000-second one, the bound lives inside `scribe session-start`, which
38
+ * gives up on its own.
39
+ */
40
+ export declare function withSessionStartHook(settings: Settings): {
41
+ settings: Settings;
42
+ changed: boolean;
43
+ };
44
+ export type HookInstallResult = {
45
+ status: 'installed' | 'already-present';
46
+ path: string;
47
+ } | {
48
+ status: 'unreadable';
49
+ path: string;
50
+ reason: string;
51
+ };
52
+ /**
53
+ * Writes the SessionStart hook into `~/.claude/settings.json`.
54
+ *
55
+ * A settings file that exists but doesn't parse is left strictly alone and
56
+ * reported. Rewriting it would mean throwing away comments, ordering and
57
+ * whatever the parse error was hiding — someone's whole Claude Code setup, to
58
+ * install an update check.
59
+ */
60
+ export declare function installSessionStartHook(path?: string): HookInstallResult;
61
+ /**
62
+ * Installs the hook and says what happened, in the one line each caller wants.
63
+ *
64
+ * Called from `scribe login` and `scribe update` rather than only from an
65
+ * explicit `--install-hook`, so nobody has to know this flag exists. Auto-
66
+ * updating is the feature; needing to remember a setup command to turn on the
67
+ * thing that saves you from remembering commands is not much of one.
68
+ *
69
+ * Silent when the hook is already there — this runs on every login and every
70
+ * update, and "already present" is the normal case, not news.
71
+ */
72
+ export declare function reportHookInstall(): void;
73
+ export {};
74
+ //# sourceMappingURL=claude-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-hook.d.ts","sourceRoot":"","sources":["../../src/lib/claude-hook.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,oFAAoF;AACpF,eAAO,MAAM,YAAY,+CAAwC,CAAC;AAElE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,KAAK,QAAQ,GAAG;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;CACrC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAO5B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAYjG;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,SAAiB,GAAG,iBAAiB,CA+BhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAUxC"}
@@ -0,0 +1,108 @@
1
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, join } from 'node:path';
4
+ import { tildify } from './skill.js';
5
+ /**
6
+ * Stamped on the hook this installs so a later version can find its own entry
7
+ * and replace it, instead of appending a second copy every time someone runs
8
+ * `scribe update`.
9
+ */
10
+ export const HOOK_MARKER = '# scribe-managed-hook';
11
+ /** What the hook runs. `scribe` resolves off PATH, same as the user's own shell. */
12
+ export const HOOK_COMMAND = `scribe session-start ${HOOK_MARKER}`;
13
+ export function settingsPath() {
14
+ return join(homedir(), '.claude', 'settings.json');
15
+ }
16
+ /** True when this entry is one we wrote, by the marker in its command string. */
17
+ function isOurs(entry) {
18
+ return (entry.hooks ?? []).some((hook) => typeof hook.command === 'string' && hook.command.includes(HOOK_MARKER));
19
+ }
20
+ /**
21
+ * Adds (or refreshes) the SessionStart hook in a parsed settings object.
22
+ *
23
+ * Pure and exported so the merge is testable without touching a real
24
+ * `~/.claude/settings.json` — the one file in this whole feature where getting
25
+ * it wrong costs someone their editor configuration.
26
+ *
27
+ * Every other hook, including other `SessionStart` entries, is preserved
28
+ * untouched. This machine already runs four unrelated SessionStart hooks from
29
+ * three different tools; appending blindly or rewriting the array wholesale
30
+ * would break them.
31
+ *
32
+ * No `timeout` is set. Claude Code's own hooks disagree about the unit in
33
+ * practice — settings on this machine carry both `10` and `8000` for what is
34
+ * nominally the same field — so rather than guess and risk either a 60ms cap
35
+ * or a 60,000-second one, the bound lives inside `scribe session-start`, which
36
+ * gives up on its own.
37
+ */
38
+ export function withSessionStartHook(settings) {
39
+ const hooks = { ...(settings.hooks ?? {}) };
40
+ const existing = hooks.SessionStart ?? [];
41
+ const ours = { hooks: [{ type: 'command', command: HOOK_COMMAND }] };
42
+ const alreadyCorrect = existing.some((entry) => isOurs(entry) && entry.hooks?.length === 1 && entry.hooks[0].command === HOOK_COMMAND);
43
+ if (alreadyCorrect)
44
+ return { settings, changed: false };
45
+ hooks.SessionStart = [...existing.filter((entry) => !isOurs(entry)), ours];
46
+ return { settings: { ...settings, hooks }, changed: true };
47
+ }
48
+ /**
49
+ * Writes the SessionStart hook into `~/.claude/settings.json`.
50
+ *
51
+ * A settings file that exists but doesn't parse is left strictly alone and
52
+ * reported. Rewriting it would mean throwing away comments, ordering and
53
+ * whatever the parse error was hiding — someone's whole Claude Code setup, to
54
+ * install an update check.
55
+ */
56
+ export function installSessionStartHook(path = settingsPath()) {
57
+ let current = {};
58
+ if (existsSync(path)) {
59
+ let raw;
60
+ try {
61
+ raw = readFileSync(path, 'utf-8');
62
+ }
63
+ catch (err) {
64
+ return { status: 'unreadable', path, reason: err.message };
65
+ }
66
+ try {
67
+ current = JSON.parse(raw);
68
+ }
69
+ catch {
70
+ return { status: 'unreadable', path, reason: 'it is not valid JSON' };
71
+ }
72
+ if (typeof current !== 'object' || current === null || Array.isArray(current)) {
73
+ return { status: 'unreadable', path, reason: 'its top level is not an object' };
74
+ }
75
+ }
76
+ const { settings, changed } = withSessionStartHook(current);
77
+ if (!changed)
78
+ return { status: 'already-present', path };
79
+ // Written to a sibling and renamed: this file is read by every Claude Code
80
+ // session on the machine, and a partial write is one that parses as garbage.
81
+ mkdirSync(dirname(path), { recursive: true });
82
+ const temp = `${path}.scribe-tmp`;
83
+ writeFileSync(temp, `${JSON.stringify(settings, null, 2)}\n`);
84
+ renameSync(temp, path);
85
+ return { status: 'installed', path };
86
+ }
87
+ /**
88
+ * Installs the hook and says what happened, in the one line each caller wants.
89
+ *
90
+ * Called from `scribe login` and `scribe update` rather than only from an
91
+ * explicit `--install-hook`, so nobody has to know this flag exists. Auto-
92
+ * updating is the feature; needing to remember a setup command to turn on the
93
+ * thing that saves you from remembering commands is not much of one.
94
+ *
95
+ * Silent when the hook is already there — this runs on every login and every
96
+ * update, and "already present" is the normal case, not news.
97
+ */
98
+ export function reportHookInstall() {
99
+ const hook = installSessionStartHook();
100
+ if (hook.status === 'installed') {
101
+ console.log(`Auto-update: added a session-start check to ${tildify(hook.path)}.`);
102
+ }
103
+ else if (hook.status === 'unreadable') {
104
+ console.warn(`Auto-update: left ${tildify(hook.path)} alone — ${hook.reason}. ` +
105
+ 'Scribe will not update itself on this machine; fix that file and run `scribe update --install-hook`.');
106
+ }
107
+ }
108
+ //# sourceMappingURL=claude-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-hook.js","sourceRoot":"","sources":["../../src/lib/claude-hook.ts"],"names":[],"mappings":"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"}