@mmnto/cli 1.51.0 → 1.53.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 (67) hide show
  1. package/dist/adapters/github-cli-pr.d.ts.map +1 -1
  2. package/dist/adapters/github-cli-pr.js +3 -1
  3. package/dist/adapters/github-cli-pr.js.map +1 -1
  4. package/dist/adapters/github-cli-pr.test.js +4 -4
  5. package/dist/adapters/github-cli-pr.test.js.map +1 -1
  6. package/dist/adapters/github-cli-project.d.ts +21 -0
  7. package/dist/adapters/github-cli-project.d.ts.map +1 -0
  8. package/dist/adapters/github-cli-project.js +69 -0
  9. package/dist/adapters/github-cli-project.js.map +1 -0
  10. package/dist/adapters/github-cli.d.ts +7 -1
  11. package/dist/adapters/github-cli.d.ts.map +1 -1
  12. package/dist/adapters/github-cli.js +30 -0
  13. package/dist/adapters/github-cli.js.map +1 -1
  14. package/dist/adapters/github-cli.test.js +26 -0
  15. package/dist/adapters/github-cli.test.js.map +1 -1
  16. package/dist/adapters/issue-adapter.d.ts +18 -0
  17. package/dist/adapters/issue-adapter.d.ts.map +1 -1
  18. package/dist/adapters/pr-adapter.d.ts +2 -0
  19. package/dist/adapters/pr-adapter.d.ts.map +1 -1
  20. package/dist/commands/eject.d.ts.map +1 -1
  21. package/dist/commands/eject.js +12 -4
  22. package/dist/commands/eject.js.map +1 -1
  23. package/dist/commands/gate-install.d.ts +59 -0
  24. package/dist/commands/gate-install.d.ts.map +1 -0
  25. package/dist/commands/gate-install.js +111 -0
  26. package/dist/commands/gate-install.js.map +1 -0
  27. package/dist/commands/gate-install.test.d.ts +2 -0
  28. package/dist/commands/gate-install.test.d.ts.map +1 -0
  29. package/dist/commands/gate-install.test.js +472 -0
  30. package/dist/commands/gate-install.test.js.map +1 -0
  31. package/dist/commands/gate.d.ts +31 -0
  32. package/dist/commands/gate.d.ts.map +1 -1
  33. package/dist/commands/gate.js +70 -0
  34. package/dist/commands/gate.js.map +1 -1
  35. package/dist/commands/host-hooks.d.ts +745 -0
  36. package/dist/commands/host-hooks.d.ts.map +1 -0
  37. package/dist/commands/host-hooks.js +229 -0
  38. package/dist/commands/host-hooks.js.map +1 -0
  39. package/dist/commands/init-templates.d.ts +8 -0
  40. package/dist/commands/init-templates.d.ts.map +1 -1
  41. package/dist/commands/init-templates.js +240 -0
  42. package/dist/commands/init-templates.js.map +1 -1
  43. package/dist/commands/init.d.ts +6 -4
  44. package/dist/commands/init.d.ts.map +1 -1
  45. package/dist/commands/init.js +81 -94
  46. package/dist/commands/init.js.map +1 -1
  47. package/dist/commands/orient-coherence.d.ts +33 -0
  48. package/dist/commands/orient-coherence.d.ts.map +1 -0
  49. package/dist/commands/orient-coherence.js +64 -0
  50. package/dist/commands/orient-coherence.js.map +1 -0
  51. package/dist/commands/orient-coherence.test.d.ts +2 -0
  52. package/dist/commands/orient-coherence.test.d.ts.map +1 -0
  53. package/dist/commands/orient-coherence.test.js +99 -0
  54. package/dist/commands/orient-coherence.test.js.map +1 -0
  55. package/dist/commands/orient.d.ts +67 -0
  56. package/dist/commands/orient.d.ts.map +1 -0
  57. package/dist/commands/orient.js +412 -0
  58. package/dist/commands/orient.js.map +1 -0
  59. package/dist/commands/orient.test.d.ts +2 -0
  60. package/dist/commands/orient.test.d.ts.map +1 -0
  61. package/dist/commands/orient.test.js +329 -0
  62. package/dist/commands/orient.test.js.map +1 -0
  63. package/dist/help.js +1 -1
  64. package/dist/help.js.map +1 -1
  65. package/dist/index.js +35 -0
  66. package/dist/index.js.map +1 -1
  67. package/package.json +2 -2
@@ -2,6 +2,37 @@ export interface GateCheckCommandOptions {
2
2
  event: string;
3
3
  payload: string;
4
4
  }
5
+ export interface GateInstallCommandOptions {
6
+ /** Install every known gate (`knownGateEvents()`). */
7
+ all?: boolean;
8
+ /** Install a single named gate (validated against `knownGateEvents()`). */
9
+ name?: string;
10
+ /**
11
+ * Install under the advisory pilot tier (deny → exit 0 + stderr). Default
12
+ * (omitted) bakes `--strict` (deny → exit 2), so a default install is
13
+ * enforcement-immune. `--strict` may be passed for explicitness.
14
+ */
15
+ pilot?: boolean;
16
+ /** Explicit strict tier (the default; accepted for symmetry with `--pilot`). */
17
+ strict?: boolean;
18
+ }
19
+ /**
20
+ * Resolve + validate the gate events to install from the CLI options. The
21
+ * `knownGateEvents()` registry is the single source of truth: `--all`
22
+ * enumerates it, and a named gate must be a member or we throw (mirror the
23
+ * engine's no-default-allow — never silently install nothing).
24
+ */
25
+ export declare function resolveGateEvents(opts: GateInstallCommandOptions): Promise<string[]>;
26
+ /**
27
+ * `totem gate install [--all | --<name>]`
28
+ *
29
+ * Idempotently merges one PreToolUse entry per selected gate into committed
30
+ * `.claude/settings.json` and scaffolds the shared parameterized wrapper to
31
+ * `.claude/hooks/gate-wrapper.cjs`. Thin caller of the shared `installGates`
32
+ * merger (the same path `init --gates=` routes through) — no second copy of
33
+ * the merge logic. Fails loud on an unknown `--<name>` (no default-install).
34
+ */
35
+ export declare function gateInstallCommand(opts: GateInstallCommandOptions): Promise<void>;
5
36
  /**
6
37
  * `totem gate check --event <type> --payload <json>`
7
38
  *
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/commands/gate.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBnF"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/commands/gate.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA0B1F;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BvF;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBnF"}
@@ -1,5 +1,75 @@
1
1
  import * as path from 'node:path';
2
2
  import { isGlobalConfigPath, loadConfig, resolveConfigPath } from '../utils.js';
3
+ import { installGates } from './gate-install.js';
4
+ /**
5
+ * Command-specific log tag for non-error output (log.success / log.dim).
6
+ * `log.error` keeps the mandatory fixed literal `'Totem Error'` tag per the
7
+ * repo styleguide (command-specific tags for info/success/dim, the unified
8
+ * error tag for log.error).
9
+ */
10
+ const TAG = 'Gate';
11
+ /** Derive the install-time tier from the CLI options (default strict). */
12
+ function resolveTier(opts) {
13
+ return opts.pilot ? 'pilot' : 'strict';
14
+ }
15
+ /**
16
+ * Resolve + validate the gate events to install from the CLI options. The
17
+ * `knownGateEvents()` registry is the single source of truth: `--all`
18
+ * enumerates it, and a named gate must be a member or we throw (mirror the
19
+ * engine's no-default-allow — never silently install nothing).
20
+ */
21
+ export async function resolveGateEvents(opts) {
22
+ const { knownGateEvents, TotemError } = await import('@mmnto/totem');
23
+ const known = knownGateEvents();
24
+ if (opts.all) {
25
+ return known;
26
+ }
27
+ const name = opts.name?.trim();
28
+ if (!name) {
29
+ throw new TotemError('GATE_INVALID', 'No gate selected: pass --all or --<name>.', `Use --all or one of: ${known.join(', ')}.`);
30
+ }
31
+ if (!known.includes(name)) {
32
+ throw new TotemError('GATE_INVALID', `Unknown gate "${name}". Known gates: ${known.join(', ')}.`, 'Use --all or one of the known gate names.');
33
+ }
34
+ return [name];
35
+ }
36
+ /**
37
+ * `totem gate install [--all | --<name>]`
38
+ *
39
+ * Idempotently merges one PreToolUse entry per selected gate into committed
40
+ * `.claude/settings.json` and scaffolds the shared parameterized wrapper to
41
+ * `.claude/hooks/gate-wrapper.cjs`. Thin caller of the shared `installGates`
42
+ * merger (the same path `init --gates=` routes through) — no second copy of
43
+ * the merge logic. Fails loud on an unknown `--<name>` (no default-install).
44
+ */
45
+ export async function gateInstallCommand(opts) {
46
+ const events = await resolveGateEvents(opts);
47
+ const { log } = await import('../ui.js');
48
+ const cwd = process.cwd();
49
+ const tier = resolveTier(opts);
50
+ const results = installGates(cwd, events, tier);
51
+ for (const result of results) {
52
+ if (result.err) {
53
+ log.error('Totem Error', `Gate install failed for ${result.file}: ${result.err}`);
54
+ continue;
55
+ }
56
+ const label = result.event ? `${result.file} (${result.event})` : result.file;
57
+ if (result.action === 'created') {
58
+ log.success(TAG, `Scaffolded ${label}`);
59
+ }
60
+ else if (result.action === 'merged') {
61
+ log.success(TAG, `Installed gate entry into ${label}`);
62
+ }
63
+ else if (result.action === 'updated') {
64
+ // Tier switch: the one existing entry's command was rewritten in place.
65
+ log.success(TAG, `Updated ${result.event ?? result.file} tier to ${tier}`);
66
+ }
67
+ else {
68
+ // Genuine same-tier no-op — the ONLY case that prints "no change".
69
+ log.dim(TAG, `${label} already present — no change`);
70
+ }
71
+ }
72
+ }
3
73
  /**
4
74
  * `totem gate check --event <type> --payload <json>`
5
75
  *
@@ -1 +1 @@
1
- {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/commands/gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOhF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA6B;IAClE,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IAElE,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,wBAAwB,EACxB,uEAAuE,EACvE,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/commands/gate.ts"],"names":[],"mappings":"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"}