@intentius/sql-yodeler 0.2.0 → 0.3.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 (194) hide show
  1. package/README.md +3 -3
  2. package/dist/chant/build.js +7 -0
  3. package/dist/chant/build.js.map +1 -1
  4. package/dist/ci/render.d.ts +289 -0
  5. package/dist/ci/render.js +688 -0
  6. package/dist/ci/render.js.map +1 -0
  7. package/dist/ci/replay.d.ts +17 -0
  8. package/dist/ci/replay.js +69 -0
  9. package/dist/ci/replay.js.map +1 -0
  10. package/dist/commands/apply.d.ts +113 -0
  11. package/dist/commands/apply.js +228 -21
  12. package/dist/commands/apply.js.map +1 -1
  13. package/dist/commands/approve.js +44 -0
  14. package/dist/commands/approve.js.map +1 -1
  15. package/dist/commands/checkpoint.d.ts +3 -0
  16. package/dist/commands/checkpoint.js +78 -0
  17. package/dist/commands/checkpoint.js.map +1 -0
  18. package/dist/commands/ci.d.ts +3 -0
  19. package/dist/commands/ci.js +118 -0
  20. package/dist/commands/ci.js.map +1 -0
  21. package/dist/commands/docs.d.ts +11 -0
  22. package/dist/commands/docs.js +108 -0
  23. package/dist/commands/docs.js.map +1 -0
  24. package/dist/commands/drift.d.ts +13 -1
  25. package/dist/commands/drift.js +18 -2
  26. package/dist/commands/drift.js.map +1 -1
  27. package/dist/commands/index.js +10 -0
  28. package/dist/commands/index.js.map +1 -1
  29. package/dist/commands/init.js +1 -1
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/lint.js +11 -3
  32. package/dist/commands/lint.js.map +1 -1
  33. package/dist/commands/override.js +48 -16
  34. package/dist/commands/override.js.map +1 -1
  35. package/dist/commands/plan.js +5 -1
  36. package/dist/commands/plan.js.map +1 -1
  37. package/dist/commands/report.d.ts +13 -0
  38. package/dist/commands/report.js +121 -0
  39. package/dist/commands/report.js.map +1 -0
  40. package/dist/commands/revert.d.ts +20 -0
  41. package/dist/commands/revert.js +246 -0
  42. package/dist/commands/revert.js.map +1 -0
  43. package/dist/commands/status.js +32 -5
  44. package/dist/commands/status.js.map +1 -1
  45. package/dist/config/base.d.ts +69 -0
  46. package/dist/config/base.js +121 -0
  47. package/dist/config/base.js.map +1 -0
  48. package/dist/config/define.d.ts +123 -1
  49. package/dist/config/define.js +2 -0
  50. package/dist/config/define.js.map +1 -1
  51. package/dist/config/index.d.ts +2 -0
  52. package/dist/config/index.js +2 -0
  53. package/dist/config/index.js.map +1 -1
  54. package/dist/config/load.d.ts +1 -1
  55. package/dist/config/load.js +90 -5
  56. package/dist/config/load.js.map +1 -1
  57. package/dist/config/settings.d.ts +4 -1
  58. package/dist/config/settings.js +8 -2
  59. package/dist/config/settings.js.map +1 -1
  60. package/dist/exit.js +1 -1
  61. package/dist/exit.js.map +1 -1
  62. package/dist/history/postgres/ddl.d.ts +18 -0
  63. package/dist/history/postgres/ddl.js +27 -2
  64. package/dist/history/postgres/ddl.js.map +1 -1
  65. package/dist/history/postgres/store.d.ts +2 -0
  66. package/dist/history/postgres/store.js +7 -1
  67. package/dist/history/postgres/store.js.map +1 -1
  68. package/dist/history/rows.d.ts +16 -3
  69. package/dist/history/rows.js +30 -1
  70. package/dist/history/rows.js.map +1 -1
  71. package/dist/history/store.d.ts +2 -0
  72. package/dist/history/store.js +2 -2
  73. package/dist/history/store.js.map +1 -1
  74. package/dist/index.d.ts +4 -1
  75. package/dist/index.js +1 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/lint/check.js +17 -2
  78. package/dist/lint/check.js.map +1 -1
  79. package/dist/lint/report.js +1 -1
  80. package/dist/lint/report.js.map +1 -1
  81. package/dist/lint/routines.d.ts +26 -0
  82. package/dist/lint/routines.js +65 -0
  83. package/dist/lint/routines.js.map +1 -0
  84. package/dist/lint/rules.d.ts +16 -4
  85. package/dist/lint/rules.js +9 -4
  86. package/dist/lint/rules.js.map +1 -1
  87. package/dist/mcp/tools.d.ts +1 -1
  88. package/dist/mcp/tools.js +1 -1
  89. package/dist/mcp/tools.js.map +1 -1
  90. package/dist/migrations/checkpoint.d.ts +45 -0
  91. package/dist/migrations/checkpoint.js +110 -0
  92. package/dist/migrations/checkpoint.js.map +1 -0
  93. package/dist/migrations/create.js +2 -0
  94. package/dist/migrations/create.js.map +1 -1
  95. package/dist/migrations/document.d.ts +10 -0
  96. package/dist/migrations/document.js +1 -0
  97. package/dist/migrations/document.js.map +1 -1
  98. package/dist/migrations/index.d.ts +2 -0
  99. package/dist/migrations/index.js +2 -0
  100. package/dist/migrations/index.js.map +1 -1
  101. package/dist/migrations/routines.d.ts +31 -0
  102. package/dist/migrations/routines.js +55 -0
  103. package/dist/migrations/routines.js.map +1 -0
  104. package/dist/notify/index.d.ts +124 -0
  105. package/dist/notify/index.js +210 -0
  106. package/dist/notify/index.js.map +1 -0
  107. package/dist/notify/verify.d.ts +53 -0
  108. package/dist/notify/verify.js +71 -0
  109. package/dist/notify/verify.js.map +1 -0
  110. package/dist/pr/model.d.ts +3 -0
  111. package/dist/pr/model.js +16 -2
  112. package/dist/pr/model.js.map +1 -1
  113. package/dist/pr/render.js +27 -1
  114. package/dist/pr/render.js.map +1 -1
  115. package/dist/project.d.ts +19 -2
  116. package/dist/project.js +33 -1
  117. package/dist/project.js.map +1 -1
  118. package/dist/replay/replay.d.ts +9 -1
  119. package/dist/replay/replay.js +62 -31
  120. package/dist/replay/replay.js.map +1 -1
  121. package/dist/replay/report.js +1 -1
  122. package/dist/replay/report.js.map +1 -1
  123. package/dist/report/audit.d.ts +138 -0
  124. package/dist/report/audit.js +202 -0
  125. package/dist/report/audit.js.map +1 -0
  126. package/dist/report/jsonl.d.ts +21 -0
  127. package/dist/report/jsonl.js +52 -0
  128. package/dist/report/jsonl.js.map +1 -0
  129. package/dist/report/model.d.ts +68 -0
  130. package/dist/report/model.js +127 -0
  131. package/dist/report/model.js.map +1 -0
  132. package/dist/report/render.d.ts +18 -0
  133. package/dist/report/render.js +127 -0
  134. package/dist/report/render.js.map +1 -0
  135. package/dist/schema-docs/render.d.ts +49 -0
  136. package/dist/schema-docs/render.js +359 -0
  137. package/dist/schema-docs/render.js.map +1 -0
  138. package/dist/schemas.d.ts +5 -2
  139. package/dist/schemas.js +5 -2
  140. package/dist/schemas.js.map +1 -1
  141. package/dist/sources/ddl.d.ts +53 -0
  142. package/dist/sources/ddl.js +347 -0
  143. package/dist/sources/ddl.js.map +1 -0
  144. package/dist/sources/index.d.ts +69 -0
  145. package/dist/sources/index.js +170 -0
  146. package/dist/sources/index.js.map +1 -0
  147. package/dist/steps/postgres-migration.d.ts +35 -25
  148. package/dist/steps/postgres-migration.js +42 -29
  149. package/dist/steps/postgres-migration.js.map +1 -1
  150. package/dist/tenants/index.d.ts +40 -0
  151. package/dist/tenants/index.js +122 -0
  152. package/dist/tenants/index.js.map +1 -0
  153. package/dist/tenants/target.d.ts +23 -0
  154. package/dist/tenants/target.js +29 -0
  155. package/dist/tenants/target.js.map +1 -0
  156. package/dist/versioned/engine.d.ts +6 -0
  157. package/dist/versioned/engine.js +12 -2
  158. package/dist/versioned/engine.js.map +1 -1
  159. package/dist/versioned/index.d.ts +1 -0
  160. package/dist/versioned/index.js +1 -0
  161. package/dist/versioned/index.js.map +1 -1
  162. package/dist/versioned/op.d.ts +6 -1
  163. package/dist/versioned/op.js +7 -2
  164. package/dist/versioned/op.js.map +1 -1
  165. package/dist/versioned/policy.d.ts +33 -2
  166. package/dist/versioned/policy.js +59 -8
  167. package/dist/versioned/policy.js.map +1 -1
  168. package/dist/versioned/report.js +9 -0
  169. package/dist/versioned/report.js.map +1 -1
  170. package/dist/versioned/revert.d.ts +128 -0
  171. package/dist/versioned/revert.js +251 -0
  172. package/dist/versioned/revert.js.map +1 -0
  173. package/dist/versioned/state.d.ts +25 -0
  174. package/dist/versioned/state.js +36 -3
  175. package/dist/versioned/state.js.map +1 -1
  176. package/dist/waves/index.d.ts +179 -0
  177. package/dist/waves/index.js +268 -0
  178. package/dist/waves/index.js.map +1 -0
  179. package/dist/waves/promotion.d.ts +56 -0
  180. package/dist/waves/promotion.js +108 -0
  181. package/dist/waves/promotion.js.map +1 -0
  182. package/dist/waves/record.d.ts +24 -0
  183. package/dist/waves/record.js +20 -0
  184. package/dist/waves/record.js.map +1 -0
  185. package/package.json +11 -7
  186. package/schemas/apply.schema.json +162 -3
  187. package/schemas/checkpoint.schema.json +19 -0
  188. package/schemas/drift.schema.json +26 -1
  189. package/schemas/event.schema.json +36 -0
  190. package/schemas/lint.schema.json +4 -0
  191. package/schemas/plan.schema.json +118 -0
  192. package/schemas/report.schema.json +114 -0
  193. package/schemas/revert.schema.json +69 -0
  194. package/schemas/status.schema.json +64 -3
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/history/postgres/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/history/postgres/store.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,19 @@
7
7
  * `succeeded` is applied. One whose latest row is `failed` (a statement
8
8
  * failed) or `started` (the runner died) is part way: it resumes at the
9
9
  * first statement whose latest row is not `succeeded`.
10
+ *
11
+ * `yodel revert` (#55) writes `revert` rows, one per statement of the
12
+ * revert as it starts, succeeds or fails, then a migration row `reverted`.
13
+ * A migration whose latest migration row is `reverted` is not applied: it
14
+ * is pending again, its statements' rows no longer count, and applying it
15
+ * again runs every statement. Revert rows count only after the migration's
16
+ * latest migration row, so a revert that failed part way resumes at the
17
+ * revert statement that failed.
10
18
  */
11
- export type HistoryStatus = "started" | "succeeded" | "failed";
12
- /** `step`: an Op step (#12), recorded as a statement is, its `note` the step's summary (receipts skipped and run). */
13
- export type HistoryKind = "migration" | "statement" | "step";
19
+ /** `reverted`: on a migration row only, written by `yodel revert` (#55). */
20
+ export type HistoryStatus = "started" | "succeeded" | "failed" | "reverted";
21
+ /** `step`: an Op step (#12), recorded as a statement is, its `note` the step's summary (receipts skipped and run). `revert`: a statement of `yodel revert` (#55). */
22
+ export type HistoryKind = "migration" | "statement" | "step" | "revert";
14
23
  /** The statement index of a migration's own rows. */
15
24
  export declare const MIGRATION_ROW = -1;
16
25
  /** One row of the history table, as written and as read back. */
@@ -72,6 +81,8 @@ export interface MigrationRecord {
72
81
  appliedSeq: number | undefined;
73
82
  /** Each statement's latest row, by index. */
74
83
  statements: Map<number, StatementRecord>;
84
+ /** Each revert statement's latest row since the latest migration row, by its index in the revert (#55). */
85
+ reverts: Map<number, StatementRecord>;
75
86
  }
76
87
  /** A `yodel repair` of an applied migration: the new checksum, who recorded it, when and why. */
77
88
  export interface Repair {
@@ -90,6 +101,8 @@ export interface HistoryState {
90
101
  }
91
102
  /** The state the rows add up to. Rows may come in any order. */
92
103
  export declare function deriveState(rows: readonly HistoryRow[]): HistoryState;
104
+ /** Whether the history records the migration reverted (`yodel revert`, #55): its latest migration row is `reverted`. */
105
+ export declare const isReverted: (m: MigrationRecord | undefined) => boolean;
93
106
  /** Whether the history records the migration applied. */
94
107
  export declare const isApplied: (m: MigrationRecord | undefined) => boolean;
95
108
  /** Whether the statement at `index` has already run: its latest row is `succeeded`. Such a statement is never sent again. */
@@ -7,6 +7,14 @@
7
7
  * `succeeded` is applied. One whose latest row is `failed` (a statement
8
8
  * failed) or `started` (the runner died) is part way: it resumes at the
9
9
  * first statement whose latest row is not `succeeded`.
10
+ *
11
+ * `yodel revert` (#55) writes `revert` rows, one per statement of the
12
+ * revert as it starts, succeeds or fails, then a migration row `reverted`.
13
+ * A migration whose latest migration row is `reverted` is not applied: it
14
+ * is pending again, its statements' rows no longer count, and applying it
15
+ * again runs every statement. Revert rows count only after the migration's
16
+ * latest migration row, so a revert that failed part way resumes at the
17
+ * revert statement that failed.
10
18
  */
11
19
  import { createHash } from "node:crypto";
12
20
  /** The statement index of a migration's own rows. */
@@ -36,11 +44,30 @@ export function deriveState(rows) {
36
44
  appliedSeq: undefined,
37
45
  repairs: [],
38
46
  statements: new Map(),
47
+ reverts: new Map(),
39
48
  };
40
49
  byId.set(r.migration_id, m);
41
50
  order.push(m);
42
51
  }
43
- if (r.kind === "migration" && r.status === "succeeded" && m.status === "succeeded" && m.appliedSeq !== undefined) {
52
+ if (r.kind === "migration")
53
+ m.reverts = new Map();
54
+ if (r.kind === "migration" && r.status === "reverted") {
55
+ // Reverted: no longer applied. Applied again, every statement runs again.
56
+ m.parent = r.parent === "" ? null : r.parent;
57
+ m.checksum = r.checksum;
58
+ m.status = "reverted";
59
+ m.error = "";
60
+ m.appliedBy = r.applied_by;
61
+ m.planDigest = r.plan_digest;
62
+ m.recordedAt = r.recorded_at ?? "";
63
+ m.seq = r.seq;
64
+ m.appliedSeq = undefined;
65
+ m.statements = new Map();
66
+ }
67
+ else if (r.kind === "revert") {
68
+ m.reverts.set(r.statement_index, { index: r.statement_index, status: r.status, sha: r.statement_sha, error: r.error, seq: r.seq });
69
+ }
70
+ else if (r.kind === "migration" && r.status === "succeeded" && m.status === "succeeded" && m.appliedSeq !== undefined) {
44
71
  // Already applied: a repair. It records a new checksum; the migration was applied when and by whom it was.
45
72
  m.parent = r.parent === "" ? null : r.parent;
46
73
  m.checksum = r.checksum;
@@ -66,6 +93,8 @@ export function deriveState(rows) {
66
93
  }
67
94
  return { migrations: order, byId, maxSeq };
68
95
  }
96
+ /** Whether the history records the migration reverted (`yodel revert`, #55): its latest migration row is `reverted`. */
97
+ export const isReverted = (m) => m?.status === "reverted";
69
98
  /** Whether the history records the migration applied. */
70
99
  export const isApplied = (m) => m?.status === "succeeded";
71
100
  /** Whether the statement at `index` has already run: its latest row is `succeeded`. Such a statement is never sent again. */
@@ -1 +1 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/history/rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/history/rows.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export interface HistoryStoreLike {
25
25
  sync?: boolean;
26
26
  }): Promise<HistoryState>;
27
27
  append(rows: readonly HistoryRow[]): Promise<void>;
28
+ /** Makes the history take `yodel revert`'s rows (#55): on Postgres, widens an older table's CHECK constraints. Absent where nothing is needed. */
29
+ allowRevert?(): Promise<void>;
28
30
  }
29
31
  export declare class HistoryStore implements HistoryStoreLike {
30
32
  readonly port: ClickHousePort;
@@ -32,13 +32,13 @@ export function fromRaw(r) {
32
32
  return {
33
33
  seq: Number(r.seq),
34
34
  run_id: s("run_id"),
35
- kind: s("kind") === "statement" || s("kind") === "step" ? s("kind") : "migration",
35
+ kind: s("kind") === "statement" || s("kind") === "step" || s("kind") === "revert" ? s("kind") : "migration",
36
36
  migration_id: s("migration_id"),
37
37
  parent: s("parent"),
38
38
  checksum: s("checksum"),
39
39
  statement_index: Number(r.statement_index),
40
40
  statement_sha: s("statement_sha"),
41
- status: (["started", "succeeded", "failed"].includes(s("status")) ? s("status") : "started"),
41
+ status: (["started", "succeeded", "failed", "reverted"].includes(s("status")) ? s("status") : "started"),
42
42
  error: s("error"),
43
43
  applied_by: s("applied_by"),
44
44
  plan_digest: s("plan_digest"),
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/history/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/history/store.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,4 +7,7 @@
7
7
  * ```
8
8
  */
9
9
  export { defineConfig } from "./config/define.js";
10
- export type { EnvironmentConfig, PolicyConfig, PolicyMigration, PolicyPlan, PolicyRule, PolicyStep, Topology, TopologySetting, YodelConfig } from "./config/define.js";
10
+ export type { EnvironmentConfig, PolicyConfig, PolicyMigration, PolicyPlan, PolicyRule, PolicyStep, NotifyConfig, Topology, TopologySetting, YodelConfig } from "./config/define.js";
11
+ export { verifyWebhook, signWebhook } from "./notify/verify.js";
12
+ export type { NotifyEvent, NotifyEventKind } from "./notify/index.js";
13
+ export type { DdlSource } from "./sources/index.js";
package/dist/index.js CHANGED
@@ -7,4 +7,5 @@
7
7
  * ```
8
8
  */
9
9
  export { defineConfig } from "./config/define.js";
10
+ export { verifyWebhook, signWebhook } from "./notify/verify.js";
10
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
@@ -8,11 +8,12 @@
8
8
  * plug in as {@link ProjectRule}s through {@link LintOptions.rules}.
9
9
  */
10
10
  import { diffStatements } from "@intentius/chant-lexicon-sql/migration-statements";
11
- import { computeChecksum, emptyBuild, scanMigrations } from "../migrations/index.js";
11
+ import { checkpointProblems, computeChecksum, emptyBuild, scanMigrations } from "../migrations/index.js";
12
12
  import { levelOf } from "./config.js";
13
13
  import { LINT_RULES } from "./rules.js";
14
14
  import { mapMigrationSql } from "./silences.js";
15
15
  import { refusedStep, stepFindings, unreadableStep } from "./statements.js";
16
+ import { routineFindings } from "./routines.js";
16
17
  const message = (e) => (e instanceof Error ? e.message : String(e)).split("\n")[0] ?? "";
17
18
  const UPDATE = "if it is not applied in any environment, record its new checksum with yodel lint --update-checksum <id>; if it is, undo the edit, or record it with yodel repair <id> --reason ... <env>";
18
19
  /** The `-- yodel:allow` lines silences.ts reads. */
@@ -142,6 +143,11 @@ function schemaFindings(migrations, dialect) {
142
143
  }
143
144
  return out;
144
145
  }
146
+ /** Each checkpoint's recorded schema against the one it was written from (#63): rule `checkpoint`. */
147
+ function checkpointFindings(migrations) {
148
+ const byId = new Map(migrations.map((m) => [m.id, m]));
149
+ return migrations.flatMap((m) => checkpointProblems(m, byId).map((message) => ({ rule: "checkpoint", migration: m.id, message })));
150
+ }
145
151
  const stepName = (s) => (typeof s.name === "string" ? s.name : undefined);
146
152
  /** Lints the migrations in `dir`. Never throws on what it finds; a finding is a result. */
147
153
  export async function lintMigrations(dir, options = {}) {
@@ -149,7 +155,7 @@ export async function lintMigrations(dir, options = {}) {
149
155
  const extra = options.rules ?? [];
150
156
  const rules = { ...LINT_RULES, ...Object.fromEntries(extra.map((r) => [r.rule.id, r.rule])) };
151
157
  const dialect = options.dialect;
152
- const raw = [...directoryFindings(scan.problems, options.history, scan.migrations), ...schemaFindings(scan.migrations, dialect)];
158
+ const raw = [...directoryFindings(scan.problems, options.history, scan.migrations), ...schemaFindings(scan.migrations, dialect), ...checkpointFindings(scan.migrations)];
153
159
  const silenceable = new Set(Object.values(rules).filter((r) => r.silenceable).map((r) => r.id));
154
160
  const silences = {};
155
161
  const used = new Set();
@@ -184,6 +190,15 @@ export async function lintMigrations(dir, options = {}) {
184
190
  statementRaw.push({ rule: f.rule, ...where, message: `step ${String(i)}: ${f.message}`, ...(silence ? { silence } : {}) });
185
191
  }
186
192
  });
193
+ if (d === "postgres") {
194
+ for (const f of routineFindings(m.document)) {
195
+ const name = stepName(steps[f.step]);
196
+ const silence = map.silences.find((s) => s.step === f.step && s.rule === f.rule);
197
+ if (silence)
198
+ used.add(silence);
199
+ statementRaw.push({ rule: f.rule, migration: m.id, step: f.step, ...(name !== undefined ? { object: name } : {}), message: f.message, ...(silence ? { silence } : {}) });
200
+ }
201
+ }
187
202
  for (const s of map.silences) {
188
203
  if (used.has(s))
189
204
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/lint/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/lint/check.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export function renderLint(report) {
24
24
  out.push(...line(f));
25
25
  out.push("");
26
26
  }
27
- const silenceHint = report.findings.some((f) => f.silenced === undefined && f.level === "error" && ["destructive", "pg-rewrite", "pg-lock", "ch-mutation", "ch-rebuild"].includes(f.rule));
27
+ const silenceHint = report.findings.some((f) => f.silenced === undefined && f.level === "error" && ["destructive", "pg-rewrite", "pg-lock", "pg-signature", "ch-mutation", "ch-rebuild"].includes(f.rule));
28
28
  if (silenceHint) {
29
29
  out.push("A statement rule can be silenced for one statement, with a reason the history records when it applies:", " a line `-- yodel:allow <rule> <reason>` above the statement in migration.sql", "");
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/lint/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/lint/report.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAIpF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,GAAW,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAEpG,SAAS,IAAI,CAAC,CAAU;IACtB,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7D,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,WAAW,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3M,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,wGAAwG,EAAE,gFAAgF,EAAE,EAAE,CAAC,CAAC;IAC3M,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtI,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;IACjF,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAkB;IACzC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QAC/C,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Postgres functions, procedures and triggers in a migration (#44), each
3
+ * read with the migration's other steps and its recorded schema:
4
+ *
5
+ * - `pg-signature`: a function or procedure dropped and created with a
6
+ * changed signature. chant's SQLPG281 (the parameter types, the result,
7
+ * an output parameter, an input parameter's name or a removed default,
8
+ * which CREATE OR REPLACE refuses), or a routine dropped and another of the
9
+ * same name created in the same migration. A caller written for the old
10
+ * signature fails, or calls another overload, once it runs.
11
+ * - `pg-routine-in-use`: a function dropped while a trigger the migration's
12
+ * recorded schema declares still executes it. The DROP fails on the
13
+ * server (the trigger depends on it), and if the trigger is dropped by
14
+ * hand first, writes to its table stop firing it.
15
+ *
16
+ * Pure: what the step and the migration hold, no server.
17
+ */
18
+ import type { MigrationDocument } from "../migrations/index.js";
19
+ export interface RoutineFinding {
20
+ rule: "pg-signature" | "pg-routine-in-use";
21
+ /** The step it is about. */
22
+ step: number;
23
+ message: string;
24
+ }
25
+ /** The routine findings of one Postgres migration. */
26
+ export declare function routineFindings(doc: Pick<MigrationDocument, "steps" | "schema" | "defaultSchema">): RoutineFinding[];
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Postgres functions, procedures and triggers in a migration (#44), each
3
+ * read with the migration's other steps and its recorded schema:
4
+ *
5
+ * - `pg-signature`: a function or procedure dropped and created with a
6
+ * changed signature. chant's SQLPG281 (the parameter types, the result,
7
+ * an output parameter, an input parameter's name or a removed default,
8
+ * which CREATE OR REPLACE refuses), or a routine dropped and another of the
9
+ * same name created in the same migration. A caller written for the old
10
+ * signature fails, or calls another overload, once it runs.
11
+ * - `pg-routine-in-use`: a function dropped while a trigger the migration's
12
+ * recorded schema declares still executes it. The DROP fails on the
13
+ * server (the trigger depends on it), and if the trigger is dropped by
14
+ * hand first, writes to its table stop firing it.
15
+ *
16
+ * Pure: what the step and the migration hold, no server.
17
+ */
18
+ import { pgObjects } from "../migrations/routines.js";
19
+ const PG_FUNCTION = "Postgres::Function";
20
+ const ROUTINE = new Set([PG_FUNCTION, "Postgres::Procedure"]);
21
+ const isStatement = (s) => s.kind === "statement";
22
+ /** `schema.name(types)` without its parameter list. */
23
+ const bare = (name) => name.replace(/\(.*\)\s*$/, "");
24
+ /** `schema.name(types)`'s parameter list, `()` when it has none. */
25
+ const params = (name) => /\(.*\)\s*$/.exec(name)?.[0] ?? "()";
26
+ const isDrop = (s) => /^\s*DROP\s+(FUNCTION|PROCEDURE)\b/i.test(s.sql);
27
+ const isCreate = (s) => /^\s*CREATE\s+(OR\s+REPLACE\s+)?(FUNCTION|PROCEDURE)\b/i.test(s.sql);
28
+ /** The routine findings of one Postgres migration. */
29
+ export function routineFindings(doc) {
30
+ const out = [];
31
+ const steps = doc.steps;
32
+ let triggers;
33
+ steps.forEach((s, i) => {
34
+ if (!isStatement(s) || !ROUTINE.has(s.type) || !isDrop(s))
35
+ return;
36
+ const kind = s.type === PG_FUNCTION ? "function" : "procedure";
37
+ if (s.rule === "SQLPG281") {
38
+ const was = /^\s*DROP\s+(?:FUNCTION|PROCEDURE)\s+(.+?)\s*;?\s*$/is.exec(s.sql)?.[1] ?? s.name;
39
+ out.push({ rule: "pg-signature", step: i, message: `step ${String(i)}: SQLPG281 drops ${kind} ${was} and creates it as ${s.name}: its signature or result changes, which CREATE OR REPLACE refuses; a caller written for the old one fails once this runs` });
40
+ }
41
+ else if (s.rule === "SQLPG270") {
42
+ const dropped = s.name;
43
+ const recreated = steps.find((o) => isStatement(o) && o.type === s.type && isCreate(o) && bare(o.name) === bare(dropped) && params(o.name) !== params(dropped));
44
+ if (recreated) {
45
+ out.push({ rule: "pg-signature", step: i, message: `step ${String(i)}: drops ${kind} ${dropped} and creates ${recreated.name}: the signature changes, and a caller written for ${params(dropped)} fails once this runs` });
46
+ }
47
+ }
48
+ // A trigger function takes no declared parameters.
49
+ if (s.type !== PG_FUNCTION || params(s.name).replace(/\s/g, "") !== "()")
50
+ return;
51
+ if (s.rule === "SQLPG281")
52
+ return; // created again in the same transaction
53
+ const fn = bare(s.name);
54
+ triggers ??= pgObjects(doc.schema, doc.defaultSchema).filter((o) => o.kind === "trigger");
55
+ for (const t of triggers.filter((o) => o.fields.function === fn)) {
56
+ out.push({
57
+ rule: "pg-routine-in-use",
58
+ step: i,
59
+ message: `step ${String(i)}: drops function ${s.name}, which trigger ${t.export} (${t.qualified.split(".").pop() ?? t.qualified} ON ${String(t.fields.table)}) still executes; the DROP fails while the trigger depends on it. Declare the function again, or drop the trigger in the same migration`,
60
+ });
61
+ }
62
+ });
63
+ return out;
64
+ }
65
+ //# sourceMappingURL=routines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routines.js","sourceRoot":"","sources":["../../src/lint/routines.ts"],"names":[],"mappings":"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"}
@@ -5,17 +5,19 @@
5
5
  * Two kinds:
6
6
  *
7
7
  * - Integrity rules, over the directory and each migration as a whole:
8
- * `fork`, `directory`, `checksum`, `unreadable-object`. Always errors; no
8
+ * `fork`, `directory`, `checksum`, `unreadable-object`, `checkpoint`. Always errors; no
9
9
  * config lowers them and nothing silences them, because a migration that
10
10
  * breaks one cannot be applied safely or cannot be checked at all.
11
11
  * - Statement rules, from the classes chant's classifier gives each step:
12
- * `destructive`, `pg-rewrite`, `pg-lock`, `ch-mutation`, `ch-rebuild`.
12
+ * `destructive`, `pg-rewrite`, `pg-lock`, `pg-signature`, `ch-mutation`,
13
+ * `ch-rebuild`.
13
14
  * Errors by default; a line `-- yodel:allow <rule> <reason>` above the
14
15
  * statement in `migration.sql` silences one for that statement, and the
15
16
  * reason is recorded in the history when the migration applies.
16
17
  *
17
- * The rest (`refused-step`, `migration-sql`, `silence`) say a migration
18
- * will not apply as written or a silence is wrong. Their level can be
18
+ * The rest (`refused-step`, `pg-routine-in-use`, `migration-sql`,
19
+ * `silence`) say a migration will not apply as written or a silence is
20
+ * wrong. Their level can be
19
21
  * changed in `yodel.config.ts`, but they cannot be silenced.
20
22
  */
21
23
  export type LintLevel = "error" | "warning";
@@ -37,9 +39,19 @@ export declare const LINT_RULES: {
37
39
  readonly directory: LintRule;
38
40
  readonly checksum: LintRule;
39
41
  readonly "unreadable-object": LintRule;
42
+ readonly checkpoint: LintRule;
40
43
  readonly destructive: LintRule;
41
44
  readonly "pg-rewrite": LintRule;
42
45
  readonly "pg-lock": LintRule;
46
+ readonly "pg-signature": LintRule;
47
+ readonly "pg-routine-in-use": {
48
+ readonly id: "pg-routine-in-use";
49
+ readonly summary: "Postgres: a function dropped while a trigger the migration's schema declares still executes it; the DROP fails";
50
+ readonly level: "error";
51
+ readonly silenceable: false;
52
+ readonly configurable: true;
53
+ readonly dialect: "postgres";
54
+ };
43
55
  readonly "ch-mutation": LintRule;
44
56
  readonly "ch-rebuild": LintRule;
45
57
  readonly "refused-step": LintRule;
@@ -5,17 +5,19 @@
5
5
  * Two kinds:
6
6
  *
7
7
  * - Integrity rules, over the directory and each migration as a whole:
8
- * `fork`, `directory`, `checksum`, `unreadable-object`. Always errors; no
8
+ * `fork`, `directory`, `checksum`, `unreadable-object`, `checkpoint`. Always errors; no
9
9
  * config lowers them and nothing silences them, because a migration that
10
10
  * breaks one cannot be applied safely or cannot be checked at all.
11
11
  * - Statement rules, from the classes chant's classifier gives each step:
12
- * `destructive`, `pg-rewrite`, `pg-lock`, `ch-mutation`, `ch-rebuild`.
12
+ * `destructive`, `pg-rewrite`, `pg-lock`, `pg-signature`, `ch-mutation`,
13
+ * `ch-rebuild`.
13
14
  * Errors by default; a line `-- yodel:allow <rule> <reason>` above the
14
15
  * statement in `migration.sql` silences one for that statement, and the
15
16
  * reason is recorded in the history when the migration applies.
16
17
  *
17
- * The rest (`refused-step`, `migration-sql`, `silence`) say a migration
18
- * will not apply as written or a silence is wrong. Their level can be
18
+ * The rest (`refused-step`, `pg-routine-in-use`, `migration-sql`,
19
+ * `silence`) say a migration will not apply as written or a silence is
20
+ * wrong. Their level can be
19
21
  * changed in `yodel.config.ts`, but they cannot be silenced.
20
22
  */
21
23
  const integrity = (id, summary) => ({ id, summary, level: "error", silenceable: false, configurable: false });
@@ -26,9 +28,12 @@ export const LINT_RULES = {
26
28
  directory: integrity("directory", "the migrations directory is not one readable chain: a bad name or file, a missing parent, a cycle, another dialect"),
27
29
  checksum: integrity("checksum", "a migration's files no longer hash to its checksum: an edit after it was written, or (with --env) after it was applied"),
28
30
  "unreadable-object": integrity("unreadable-object", "an object in a recorded schema, or a step, the sql lexicon cannot read or classify; never skipped"),
31
+ checkpoint: integrity("checkpoint", "a checkpoint whose recorded schema is no longer the one it was written from, its parent's, or that holds a step other than a statement"),
29
32
  destructive: statement("destructive", "a statement or Op step removes data that cannot be recovered (a table or column drop)"),
30
33
  "pg-rewrite": statement("pg-rewrite", "Postgres: rewrites or scans the whole table under ACCESS EXCLUSIVE, blocking reads and writes while it runs", "postgres"),
31
34
  "pg-lock": statement("pg-lock", "Postgres: holds a lock that blocks writes for a whole scan or index build (an index without CONCURRENTLY, a constraint validated in place)", "postgres"),
35
+ "pg-signature": statement("pg-signature", "Postgres: a function or procedure dropped and created with another signature or result; a caller written for the old one fails", "postgres"),
36
+ "pg-routine-in-use": { id: "pg-routine-in-use", summary: "Postgres: a function dropped while a trigger the migration's schema declares still executes it; the DROP fails", level: "error", silenceable: false, configurable: true, dialect: "postgres" },
32
37
  "ch-mutation": statement("ch-mutation", "ClickHouse: starts a mutation that rewrites existing parts in the background, with no rollback", "clickhouse"),
33
38
  "ch-rebuild": statement("ch-rebuild", "ClickHouse: a rebuild, every row copied into a new table and swapped in (ClickHouseRebuildOp)", "clickhouse"),
34
39
  "refused-step": shape("refused-step", "a step yodel apply refuses to run: a manual step, or an Op step it does not run"),
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/lint/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAkBH,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,OAAe,EAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AACxI,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,OAAe,EAAE,OAA6B,EAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtM,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,OAAe,EAAE,QAAmB,OAAO,EAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAEtJ,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,iFAAiF,CAAC;IAC1G,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,oHAAoH,CAAC;IACvJ,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAE,wHAAwH,CAAC;IACzJ,mBAAmB,EAAE,SAAS,CAAC,mBAAmB,EAAE,mGAAmG,CAAC;IACxJ,WAAW,EAAE,SAAS,CAAC,aAAa,EAAE,uFAAuF,CAAC;IAC9H,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,6GAA6G,EAAE,UAAU,CAAC;IAChK,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,4IAA4I,EAAE,UAAU,CAAC;IACzL,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,gGAAgG,EAAE,YAAY,CAAC;IACvJ,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,+FAA+F,EAAE,YAAY,CAAC;IACpJ,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,iFAAiF,CAAC;IACxH,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,mGAAmG,CAAC;IAC5I,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,iHAAiH,CAAC;CACjG,CAAC;AAI9C,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAiB,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAoB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAExF,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAiB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/lint/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkBH,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,OAAe,EAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AACxI,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,OAAe,EAAE,OAA6B,EAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtM,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,OAAe,EAAE,QAAmB,OAAO,EAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAEtJ,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,iFAAiF,CAAC;IAC1G,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,oHAAoH,CAAC;IACvJ,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAE,wHAAwH,CAAC;IACzJ,mBAAmB,EAAE,SAAS,CAAC,mBAAmB,EAAE,mGAAmG,CAAC;IACxJ,UAAU,EAAE,SAAS,CAAC,YAAY,EAAE,wIAAwI,CAAC;IAC7K,WAAW,EAAE,SAAS,CAAC,aAAa,EAAE,uFAAuF,CAAC;IAC9H,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,6GAA6G,EAAE,UAAU,CAAC;IAChK,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,4IAA4I,EAAE,UAAU,CAAC;IACzL,cAAc,EAAE,SAAS,CAAC,cAAc,EAAE,gIAAgI,EAAE,UAAU,CAAC;IACvL,mBAAmB,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,gHAAgH,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;IACxP,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,gGAAgG,EAAE,YAAY,CAAC;IACvJ,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,+FAA+F,EAAE,YAAY,CAAC;IACpJ,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,iFAAiF,CAAC;IACxH,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,mGAAmG,CAAC;IAC5I,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,iHAAiH,CAAC;CACjG,CAAC;AAI9C,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAiB,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAoB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAExF,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAiB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC"}
@@ -11,7 +11,7 @@ import { SCHEMA_VERSION } from "../schemas.js";
11
11
  /** The only verbs a tool may run, and only with the flags {@link runVerb} allows. */
12
12
  export declare const READ_VERBS: Readonly<Record<string, Command>>;
13
13
  /** Never a tool, and never run by one: each writes to a database, a history, the migrations directory or the gate ledger. */
14
- export declare const WRITE_VERBS: readonly ["apply", "approve", "override", "repair", "rebase", "new", "init"];
14
+ export declare const WRITE_VERBS: readonly ["apply", "approve", "override", "repair", "revert", "rebase", "new", "checkpoint", "init"];
15
15
  export interface ToolEnvelope {
16
16
  schema: typeof SCHEMA_VERSION;
17
17
  tool: string;
package/dist/mcp/tools.js CHANGED
@@ -17,7 +17,7 @@ import { status } from "../commands/status.js";
17
17
  /** The only verbs a tool may run, and only with the flags {@link runVerb} allows. */
18
18
  export const READ_VERBS = { status, plan, lint, drift };
19
19
  /** Never a tool, and never run by one: each writes to a database, a history, the migrations directory or the gate ledger. */
20
- export const WRITE_VERBS = ["apply", "approve", "override", "repair", "rebase", "new", "init"];
20
+ export const WRITE_VERBS = ["apply", "approve", "override", "repair", "revert", "rebase", "new", "checkpoint", "init"];
21
21
  /** Flags that make a read verb write: a replay database, a checksum, a forge comment, the Op's Apply step. */
22
22
  const WRITE_FLAGS = ["--replay", "--reset", "--reset-shared", "--keep", "--update-checksum", "--comment", "--execute"];
23
23
  /** Throws when any tool could write: a write verb by name, a verb outside {@link READ_VERBS}, or no read-only annotation. */