@pome-sh/cli 0.18.0 → 0.20.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 (151) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/src/capture-server/index.js +1 -1
  3. package/dist/src/runner/mergeAdapterSignals.d.ts +23 -0
  4. package/dist/src/runner/mergeAdapterSignals.js +45 -3
  5. package/dist/src/scaffolds/mcp-loop/loop.js +3 -3
  6. package/node_modules/@hono/node-server/README.md +47 -1
  7. package/node_modules/@hono/node-server/dist/early-hints.cjs +35 -0
  8. package/node_modules/@hono/node-server/dist/early-hints.d.cts +16 -0
  9. package/node_modules/@hono/node-server/dist/early-hints.d.mts +16 -0
  10. package/node_modules/@hono/node-server/dist/early-hints.mjs +33 -0
  11. package/node_modules/@hono/node-server/dist/index.cjs +10 -6
  12. package/node_modules/@hono/node-server/dist/index.mjs +10 -6
  13. package/node_modules/@hono/node-server/package.json +14 -3
  14. package/node_modules/@pome-sh/sdk/dist/check-state-path.d.ts +71 -0
  15. package/node_modules/@pome-sh/sdk/dist/check-state-path.js +200 -0
  16. package/node_modules/@pome-sh/sdk/dist/check-state-path.js.map +1 -0
  17. package/node_modules/@pome-sh/sdk/dist/checks.d.ts +2 -0
  18. package/node_modules/@pome-sh/sdk/dist/checks.js +5 -0
  19. package/node_modules/@pome-sh/sdk/dist/checks.js.map +1 -1
  20. package/node_modules/@pome-sh/sdk/dist/recorder.d.ts +10 -1
  21. package/node_modules/@pome-sh/sdk/dist/recorder.js +11 -2
  22. package/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -1
  23. package/node_modules/@pome-sh/sdk/package.json +4 -4
  24. package/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +111 -24
  25. package/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +3 -3
  26. package/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +1 -1
  27. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +6 -3
  28. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +7 -2
  29. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +1 -1
  30. package/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +1 -1
  31. package/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +1 -1
  32. package/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +68 -4
  33. package/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +19 -5
  34. package/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +1 -1
  35. package/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +60 -28
  36. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js +81 -10
  37. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +1 -1
  38. package/node_modules/@pome-sh/shared-types/package.json +1 -1
  39. package/node_modules/@pome-sh/shared-types/trace-contract.json +49 -1
  40. package/node_modules/@pome-sh/twin-github/dist/src/check-issues.js +35 -9
  41. package/node_modules/@pome-sh/twin-github/dist/src/check-issues.js.map +1 -1
  42. package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.js +21 -5
  43. package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.js.map +1 -1
  44. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.d.ts +3 -0
  45. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js +111 -6
  46. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js.map +1 -1
  47. package/node_modules/@pome-sh/twin-github/dist/src/check-state.d.ts +21 -1
  48. package/node_modules/@pome-sh/twin-github/dist/src/check-state.js +77 -10
  49. package/node_modules/@pome-sh/twin-github/dist/src/check-state.js.map +1 -1
  50. package/node_modules/@pome-sh/twin-github/dist/src/checks.d.ts +2 -0
  51. package/node_modules/@pome-sh/twin-github/dist/src/checks.js +5 -1
  52. package/node_modules/@pome-sh/twin-github/dist/src/checks.js.map +1 -1
  53. package/node_modules/@pome-sh/twin-github/package.json +6 -6
  54. package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +36 -0
  55. package/node_modules/@pome-sh/twin-gmail/dist/src/check-drafts.js +19 -4
  56. package/node_modules/@pome-sh/twin-gmail/dist/src/check-drafts.js.map +1 -1
  57. package/node_modules/@pome-sh/twin-gmail/dist/src/check-labels.js +15 -4
  58. package/node_modules/@pome-sh/twin-gmail/dist/src/check-labels.js.map +1 -1
  59. package/node_modules/@pome-sh/twin-gmail/dist/src/check-messages.js +19 -3
  60. package/node_modules/@pome-sh/twin-gmail/dist/src/check-messages.js.map +1 -1
  61. package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.d.ts +26 -1
  62. package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.js +52 -16
  63. package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.js.map +1 -1
  64. package/node_modules/@pome-sh/twin-gmail/package.json +5 -5
  65. package/node_modules/@pome-sh/twin-linear/CHANGELOG.md +36 -0
  66. package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js +15 -3
  67. package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js.map +1 -1
  68. package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js +31 -4
  69. package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js.map +1 -1
  70. package/node_modules/@pome-sh/twin-linear/dist/src/check-state.d.ts +27 -2
  71. package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js +73 -20
  72. package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js.map +1 -1
  73. package/node_modules/@pome-sh/twin-linear/package.json +5 -5
  74. package/node_modules/@pome-sh/twin-slack/dist/src/check-messages.js +28 -7
  75. package/node_modules/@pome-sh/twin-slack/dist/src/check-messages.js.map +1 -1
  76. package/node_modules/@pome-sh/twin-slack/dist/src/check-secrets.js +16 -3
  77. package/node_modules/@pome-sh/twin-slack/dist/src/check-secrets.js.map +1 -1
  78. package/node_modules/@pome-sh/twin-slack/dist/src/check-state.d.ts +26 -1
  79. package/node_modules/@pome-sh/twin-slack/dist/src/check-state.js +31 -4
  80. package/node_modules/@pome-sh/twin-slack/dist/src/check-state.js.map +1 -1
  81. package/node_modules/@pome-sh/twin-slack/package.json +6 -6
  82. package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.d.ts +1 -1
  83. package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.js +16 -0
  84. package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.js.map +1 -1
  85. package/node_modules/@pome-sh/twin-stripe/dist/src/check-refunds.js +11 -3
  86. package/node_modules/@pome-sh/twin-stripe/dist/src/check-refunds.js.map +1 -1
  87. package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.d.ts +25 -1
  88. package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.js +31 -3
  89. package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.js.map +1 -1
  90. package/node_modules/@pome-sh/twin-stripe/package.json +6 -6
  91. package/node_modules/hono/dist/cjs/context.js +28 -13
  92. package/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
  93. package/node_modules/hono/dist/cjs/hono-base.js +3 -2
  94. package/node_modules/hono/dist/cjs/jsx/base.js +27 -23
  95. package/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
  96. package/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
  97. package/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
  98. package/node_modules/hono/dist/cjs/middleware/cors/index.js +2 -2
  99. package/node_modules/hono/dist/cjs/middleware/etag/index.js +1 -1
  100. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
  101. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
  102. package/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
  103. package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
  104. package/node_modules/hono/dist/cjs/request.js +6 -8
  105. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +55 -56
  106. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +64 -85
  107. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +13 -5
  108. package/node_modules/hono/dist/cjs/router.js +1 -1
  109. package/node_modules/hono/dist/cjs/utils/cookie.js +3 -2
  110. package/node_modules/hono/dist/cjs/utils/url.js +7 -7
  111. package/node_modules/hono/dist/context.js +28 -13
  112. package/node_modules/hono/dist/helper/proxy/index.js +4 -0
  113. package/node_modules/hono/dist/hono-base.js +3 -2
  114. package/node_modules/hono/dist/jsx/base.js +27 -23
  115. package/node_modules/hono/dist/jsx/hooks/index.js +16 -13
  116. package/node_modules/hono/dist/middleware/cache/index.js +103 -8
  117. package/node_modules/hono/dist/middleware/compress/index.js +5 -0
  118. package/node_modules/hono/dist/middleware/cors/index.js +2 -2
  119. package/node_modules/hono/dist/middleware/etag/index.js +1 -1
  120. package/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
  121. package/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
  122. package/node_modules/hono/dist/middleware/language/language.js +10 -6
  123. package/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
  124. package/node_modules/hono/dist/request.js +7 -9
  125. package/node_modules/hono/dist/router/reg-exp-router/node.js +55 -56
  126. package/node_modules/hono/dist/router/reg-exp-router/router.js +64 -85
  127. package/node_modules/hono/dist/router/reg-exp-router/trie.js +13 -5
  128. package/node_modules/hono/dist/router.js +1 -1
  129. package/node_modules/hono/dist/types/client/types.d.ts +1 -1
  130. package/node_modules/hono/dist/types/hono-base.d.ts +4 -3
  131. package/node_modules/hono/dist/types/jsx/base.d.ts +4 -2
  132. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
  133. package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
  134. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
  135. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
  136. package/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
  137. package/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
  138. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
  139. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
  140. package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
  141. package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
  142. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
  143. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +1 -1
  144. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
  145. package/node_modules/hono/dist/types/router.d.ts +1 -1
  146. package/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
  147. package/node_modules/hono/dist/types/utils/url.d.ts +1 -0
  148. package/node_modules/hono/dist/utils/cookie.js +4 -3
  149. package/node_modules/hono/dist/utils/url.js +5 -6
  150. package/node_modules/hono/package.json +10 -3
  151. package/package.json +21 -21
@@ -22,19 +22,48 @@
22
22
  // - `repository.labels` (definitions) and `issue.labels` (applied) are
23
23
  // different sets. Confusing them is the defect `github.no-new-labels`'s
24
24
  // description exists to prevent.
25
+ //
26
+ // F-1197 — the resolvers below also return the POINTER they walked, so a check
27
+ // can cite where it looked. Nothing else about them changed; the shapes above
28
+ // are still the only thing that decides how the tree is read.
29
+ import { childStatePath, statePath } from "@pome-sh/sdk/checks";
25
30
  // `ref` is always `owner/name` — the `repoRef` param type will not parse
26
31
  // anything else — so there is deliberately no bare-name branch here. The
27
32
  // owner/name fallback is for a state export that somehow omits `full_name`,
28
33
  // not for a bare-name reference, which cannot reach this function.
34
+ //
35
+ // F-1197 — it returns the INDEX beside the row. The index is not decoration: a
36
+ // check cites where it looked as a JSON Pointer, and a pointer into an array
37
+ // needs the position the walk actually stopped at. Computing it here, in the
38
+ // same loop that decides which repo matched, is what keeps the citation and the
39
+ // verdict describing the same row — a second `findIndex` at the call site would
40
+ // be a second copy of the `full_name` / `owner+name` fallback, free to drift.
29
41
  export function findRepo(state, ref) {
30
- for (const repo of state.repositories ?? []) {
42
+ const repositories = state.repositories ?? [];
43
+ for (const [index, repo] of repositories.entries()) {
31
44
  if (repo.full_name === ref)
32
- return repo;
33
- if (repo.owner != null && repo.name != null && `${repo.owner}/${repo.name}` === ref)
34
- return repo;
45
+ return { repo, index };
46
+ if (repo.owner != null && repo.name != null && `${repo.owner}/${repo.name}` === ref) {
47
+ return { repo, index };
48
+ }
35
49
  }
36
50
  return null;
37
51
  }
52
+ // The issue NUMBERS a repository export carries. `github.no-new-issues` compares
53
+ // these across the seed/final delta, and it compares numbers rather than titles
54
+ // for the reason its own description states: a duplicate issue usually carries
55
+ // the same title as the one it duplicates, so any human-authored field would let
56
+ // the duplicate hide behind its own likeness. A row with no usable number is
57
+ // dropped rather than counted as `NaN`, which would compare unequal to itself
58
+ // and read as a newly created issue on every run.
59
+ export function issueNumbers(repo) {
60
+ const numbers = new Set();
61
+ for (const issue of repo.issues ?? []) {
62
+ if (typeof issue.number === "number" && Number.isFinite(issue.number))
63
+ numbers.add(issue.number);
64
+ }
65
+ return numbers;
66
+ }
38
67
  export function labelNames(repo) {
39
68
  const names = new Set();
40
69
  for (const label of repo.labels ?? []) {
@@ -43,23 +72,61 @@ export function labelNames(repo) {
43
72
  }
44
73
  return names;
45
74
  }
75
+ /**
76
+ * The `failed` outcome a missing entity produces, citing where the lookup
77
+ * looked.
78
+ *
79
+ * One function rather than a conditional spread at every `if ("missing" in …)`
80
+ * site, because the rule it encodes — cite the searched collection, cite nothing
81
+ * when there was none — is one rule, and twelve hand-written copies of it is
82
+ * twelve chances for one to quietly drop the citation.
83
+ */
84
+ export function missOutcome(miss) {
85
+ if (miss.searched === undefined)
86
+ return { passed: false, reason: miss.missing };
87
+ return { passed: false, reason: miss.missing, evidenceStatePaths: [miss.searched] };
88
+ }
46
89
  export function resolveRepo(state, ref, where) {
47
- const repo = findRepo(state, ref);
48
- return repo ? { found: repo } : { missing: `repo ${ref} not found in ${where}` };
90
+ const hit = findRepo(state, ref);
91
+ if (hit)
92
+ return { found: hit.repo, path: statePath("repositories", hit.index) };
93
+ return {
94
+ missing: `repo ${ref} not found in ${where}`,
95
+ // `undefined` — the key absent from the export — is the only case with
96
+ // nothing to point at. A `null` repository list is a citable fact: it says
97
+ // the export carried the field and it was empty.
98
+ searched: state.repositories === undefined ? undefined : statePath("repositories"),
99
+ };
49
100
  }
50
101
  export function resolveIssue(state, ref, number) {
51
102
  const repo = resolveRepo(state, ref, "state_final");
52
103
  if ("missing" in repo)
53
104
  return repo;
54
- const issue = (repo.found.issues ?? []).find((candidate) => candidate.number === Number(number));
55
- return issue ? { found: issue } : { missing: `issue #${number} not found in ${ref}` };
105
+ const issues = repo.found.issues ?? [];
106
+ const index = issues.findIndex((candidate) => candidate.number === Number(number));
107
+ if (index >= 0) {
108
+ return { found: issues[index], path: childStatePath(repo.path, "issues", index) };
109
+ }
110
+ return {
111
+ missing: `issue #${number} not found in ${ref}`,
112
+ searched: repo.found.issues === undefined ? undefined : childStatePath(repo.path, "issues"),
113
+ };
56
114
  }
57
115
  export function resolvePullRequest(state, ref, number) {
58
116
  const repo = resolveRepo(state, ref, "state_final");
59
117
  if ("missing" in repo)
60
118
  return repo;
61
- const pull = (repo.found.pull_requests ?? []).find((candidate) => candidate.number === Number(number));
62
- return pull ? { found: pull } : { missing: `pull request #${number} not found in ${ref}` };
119
+ const pulls = repo.found.pull_requests ?? [];
120
+ const index = pulls.findIndex((candidate) => candidate.number === Number(number));
121
+ if (index >= 0) {
122
+ return { found: pulls[index], path: childStatePath(repo.path, "pull_requests", index) };
123
+ }
124
+ return {
125
+ missing: `pull request #${number} not found in ${ref}`,
126
+ searched: repo.found.pull_requests === undefined
127
+ ? undefined
128
+ : childStatePath(repo.path, "pull_requests"),
129
+ };
63
130
  }
64
131
  export function isMerged(pull) {
65
132
  return pull.merged === 1 || pull.merged === true;
@@ -1 +1 @@
1
- {"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export declare const GITHUB_CHECKS: readonly [import("./check-kind.js").Check<{
25
25
  repo: string;
26
26
  }>, import("./check-kind.js").Check<{
27
27
  repo: string;
28
+ }>, import("./check-kind.js").Check<{
29
+ repo: string;
28
30
  }>, import("./check-kind.js").Check<{
29
31
  pr: string;
30
32
  repo: string;
@@ -46,7 +46,7 @@
46
46
  // So github now has no hand-written predicate left anywhere.
47
47
  import { issueAssignee, issueCommentContains, issueExactlyOneLabel, issueExists, issueHasLabel, issueStateCheck, } from "./check-issues.js";
48
48
  import { pullRequestCommentExists, pullRequestReviewExists, pullRequestStateCheck, } from "./check-pulls.js";
49
- import { commitStatus, fileExists, noNewLabels } from "./check-repos.js";
49
+ import { commitStatus, fileExists, noNewIssues, noNewLabels } from "./check-repos.js";
50
50
  import { noUnsupportedEndpoint, toolNeverCalled } from "./check-tape.js";
51
51
  // Order is not first-match-wins here — the generated patterns are anchored and
52
52
  // mutually exclusive, and `checks-contract.test.ts` proves no sentence is
@@ -60,6 +60,10 @@ export const GITHUB_CHECKS = [
60
60
  issueExactlyOneLabel,
61
61
  issueAssignee,
62
62
  issueCommentContains,
63
+ // The two repo-scoped deltas sit together, right after the issue assertions
64
+ // they are the negatives of: `no-new-issues` is what `issue-exists` cannot
65
+ // say, and an author reaching for one usually wants to see the other.
66
+ noNewIssues,
63
67
  noNewLabels,
64
68
  pullRequestStateCheck,
65
69
  pullRequestCommentExists,
@@ -1 +1 @@
1
- {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/checks.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,mBAAmB;AACnB,EAAE;AACF,4EAA4E;AAC5E,kEAAkE;AAClE,+EAA+E;AAC/E,4CAA4C;AAC5C,EAAE;AACF,6DAA6D;AAC7D,6EAA6E;AAC7E,8DAA8D;AAC9D,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,oEAAoE;AACpE,0EAA0E;AAC1E,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,EAAE;AACF,6DAA6D;AAE7D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAezE,+EAA+E;AAC/E,0EAA0E;AAC1E,gFAAgF;AAChF,uEAAuE;AACvE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW;IACX,eAAe;IACf,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,WAAW;IACX,qBAAqB;IACrB,wBAAwB;IACxB,uBAAuB;IACvB,UAAU;IACV,YAAY;IACZ,4EAA4E;IAC5E,+EAA+E;IAC/E,kEAAkE;IAClE,qBAAqB;IACrB,eAAe;CACP,CAAC"}
1
+ {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/checks.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,mBAAmB;AACnB,EAAE;AACF,4EAA4E;AAC5E,kEAAkE;AAClE,+EAA+E;AAC/E,4CAA4C;AAC5C,EAAE;AACF,6DAA6D;AAC7D,6EAA6E;AAC7E,8DAA8D;AAC9D,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,oEAAoE;AACpE,0EAA0E;AAC1E,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,EAAE;AACF,6DAA6D;AAE7D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAezE,+EAA+E;AAC/E,0EAA0E;AAC1E,gFAAgF;AAChF,uEAAuE;AACvE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW;IACX,eAAe;IACf,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,4EAA4E;IAC5E,2EAA2E;IAC3E,sEAAsE;IACtE,WAAW;IACX,WAAW;IACX,qBAAqB;IACrB,wBAAwB;IACxB,uBAAuB;IACvB,UAAU;IACV,YAAY;IACZ,4EAA4E;IAC5E,+EAA+E;IAC/E,kEAAkE;IAClE,qBAAqB;IACrB,eAAe;CACP,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/twin-github",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Deterministic GitHub-shaped twin for agent testing — REST + MCP, SQLite-backed state.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -33,11 +33,11 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@hono/node-server": "^2.0.10",
37
- "@pome-sh/sdk": "0.10.0",
38
- "@pome-sh/shared-types": "0.13.0",
39
- "hono": "^4.12.31",
40
- "zod": "^4.1.13"
36
+ "@hono/node-server": "^2.1.0",
37
+ "@pome-sh/sdk": "0.11.1",
38
+ "@pome-sh/shared-types": "0.14.1",
39
+ "hono": "^4.13.0",
40
+ "zod": "^4.4.3"
41
41
  },
42
42
  "keywords": [
43
43
  "github",
@@ -1,5 +1,41 @@
1
1
  # @pome-sh/twin-gmail — CHANGELOG
2
2
 
3
+
4
+ ## 0.3.3 — 2026-08-04
5
+
6
+ Dependency-only patch (#302): `hono` `^4.12.31` → `^4.13.0`, `zod` `^4.1.13` → `^4.4.3`, `@hono/node-server` `^2.0.10` → `^2.1.0`.
7
+ No source file changed and `npm run test:contract` is green, so the surface is
8
+ identical — this exists so the npm artifact stops differing from `main`, which is
9
+ the staleness the publish skip-guard cannot see.
10
+
11
+ ## 0.3.2 — 2026-08-04
12
+
13
+ - Re-pinned to `@pome-sh/sdk@0.11.0` for the F-1200 parent-vocabulary
14
+ change: a recorded row now carries `parent_event_id` rather than `parent_id`.
15
+ No change to this twin's own surface — `npm run test:contract` is green.
16
+
17
+ ## 0.3.1 — 2026-08-03
18
+
19
+ Every state-reading check says where it looked (F-1197).
20
+
21
+ - 6 declarations now fill `CheckOutcome.evidenceStatePaths` (new in
22
+ `@pome-sh/sdk` 0.10.1) with RFC 6901 pointers into this twin's exported tree.
23
+ - `check-state.ts`'s resolvers return the pointer they walked. `Resolved<T>`'s
24
+ found arm gains `path`; its missing arm gains an optional `searched`, naming
25
+ the collection a failed lookup scanned.
26
+ - `checks-contract.test.ts` gains the citation gate and an EMPTY
27
+ `HONEST_UNCITED_CHECKS` ledger.
28
+
29
+ A failed lookup cites too, and that is the half worth knowing about. A message the export does not carry is the commonest refusal here, and it is the one a reader most wants to check.
30
+ So the honest citation on that arm is not the row — there is none — but the list:
31
+ *this is where I looked, see for yourself that it is not in it.*
32
+
33
+ Requires `@pome-sh/sdk` 0.10.1: the declarations call `statePath` /
34
+ `childStatePath`, which 0.10.0 does not export.
35
+
36
+ No sentence, template, substrate or check id changed, so `checksDigest` is
37
+ identical and no criterion re-binds.
38
+
3
39
  ## 0.3.0 — 2026-07-30
4
40
 
5
41
  Gmail declares its assertable check vocabulary (F-1128, milestone A3).
@@ -9,8 +9,9 @@
9
9
  // "no draft is addressed to anyone", always — a negative that can never fail,
10
10
  // which is the exact defect A3 exists to eliminate.
11
11
  import { defineCheck, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER } from "@pome-sh/sdk/checks";
12
+ import { childStatePath } from "@pome-sh/sdk/checks";
12
13
  import { countWord, emailAddress, parseCount } from "./check-params.js";
13
- import { draftRecipients, isTruncated } from "./check-state.js";
14
+ import { DRAFTS_PATH, draftRecipients, isTruncated } from "./check-state.js";
14
15
  import { draftAddressedTo as draftFor, finalWorld, gmailState } from "./check-worlds.js";
15
16
  export const draftAddressedTo = defineCheck({
16
17
  id: "gmail.draft-addressed-to",
@@ -58,9 +59,19 @@ export const draftAddressedTo = defineCheck({
58
59
  return { passed: false, status: "skipped", reason: "state_incomplete" };
59
60
  }
60
61
  const wanted = email.toLowerCase();
61
- const hit = final.drafts.find((entry) => draftRecipients(final, entry).some((to) => to.toLowerCase() === wanted));
62
- if (hit) {
63
- return { passed: true, reason: `draft ${hit.id ?? "?"} is addressed to ${email}` };
62
+ const index = final.drafts.findIndex((entry) => draftRecipients(final, entry).some((to) => to.toLowerCase() === wanted));
63
+ if (index >= 0) {
64
+ const hit = final.drafts[index];
65
+ return {
66
+ passed: true,
67
+ reason: `draft ${hit.id ?? "?"} is addressed to ${email}`,
68
+ // The DRAFT row, not the backing message that actually holds the
69
+ // address. A reader following this pointer lands on the thing the
70
+ // sentence is about — "a draft addressed to X" — and the join to the
71
+ // message is an implementation detail of how the twin exports, not the
72
+ // claim (F-1197).
73
+ evidenceStatePaths: [childStatePath(DRAFTS_PATH, index)],
74
+ };
64
75
  }
65
76
  // Only refuse once the answer would otherwise be "no". A capped collection
66
77
  // that still contains the draft is a real pass, and skipping it would drop a
@@ -71,6 +82,7 @@ export const draftAddressedTo = defineCheck({
71
82
  return {
72
83
  passed: false,
73
84
  reason: `no draft is addressed to ${email} (${final.drafts.length} draft(s) inspected)`,
85
+ evidenceStatePaths: [DRAFTS_PATH],
74
86
  };
75
87
  },
76
88
  });
@@ -132,6 +144,9 @@ export const draftCountAtLeast = defineCheck({
132
144
  return {
133
145
  passed: total >= wanted,
134
146
  reason: `${total} draft(s) exist (wanted at least ${wanted})`,
147
+ // The collection whose LENGTH is the assertion. There is no narrower
148
+ // address for a cardinality.
149
+ evidenceStatePaths: [DRAFTS_PATH],
135
150
  };
136
151
  },
137
152
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check-drafts.js","sourceRoot":"","sources":["../../src/check-drafts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-drafts.js","sourceRoot":"","sources":["../../src/check-drafts.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  // `github.no-new-labels` records what happens when one sentence blurs the two.
10
10
  import { defineCheck, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
11
11
  import { labelName } from "./check-params.js";
12
- import { resolveLabelByName } from "./check-state.js";
12
+ import { missSkip, resolveLabelByName } from "./check-state.js";
13
13
  import { finalWorld, gmailState, systemLabel, userLabel } from "./check-worlds.js";
14
14
  export const labelExists = defineCheck({
15
15
  id: "gmail.label-exists",
@@ -46,11 +46,22 @@ export const labelExists = defineCheck({
46
46
  // `state_incomplete` and `collection_truncated` are unanswerable; a label
47
47
  // genuinely not there is the honest FAIL this check exists to deliver.
48
48
  if (found.missing.startsWith("label_not_found")) {
49
- return { passed: false, reason: `no label named "${label}" exists` };
49
+ return {
50
+ passed: false,
51
+ reason: `no label named "${label}" exists`,
52
+ // The label COLLECTION — the honest citation for a lookup that found
53
+ // nothing, and the arm a reader most wants to open: see for yourself
54
+ // that the name is not in it (F-1197).
55
+ ...(found.searched === undefined ? {} : { evidenceStatePaths: [found.searched] }),
56
+ };
50
57
  }
51
- return { passed: false, status: "skipped", reason: found.missing };
58
+ return missSkip(found);
52
59
  }
53
- return { passed: true, reason: `label "${label}" exists (id ${found.found.id ?? "?"})` };
60
+ return {
61
+ passed: true,
62
+ reason: `label "${label}" exists (id ${found.found.id ?? "?"})`,
63
+ evidenceStatePaths: [found.path],
64
+ };
54
65
  },
55
66
  });
56
67
  //# sourceMappingURL=check-labels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-labels.js","sourceRoot":"","sources":["../../src/check-labels.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnF,MAAM,CAAC,MAAM,WAAW,GAA6B,WAAW,CAAC;IAC/D,EAAE,EAAE,oBAAoB;IACxB,WAAW,EACT,+FAA+F;QAC/F,6FAA6F;QAC7F,yFAAyF;QACzF,+FAA+F;QAC/F,6FAA6F;QAC7F,qFAAqF;IACvF,uEAAuE;IACvE,+EAA+E;IAC/E,6EAA6E;IAC7E,yCAAyC;IACzC,QAAQ,EAAE,8BAA8B;IACxC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5B,SAAS,EAAE,OAAO;IAClB,uEAAuE;IACvE,6BAA6B;IAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,gEAAgE;IAChE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC7B,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/D,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,WAAW;QACX,OAAO,EAAE,UAAU,CACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAC5E;QACD,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KACpE,CAAC;IACF,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACvB,0EAA0E;YAC1E,uEAAuE;YACvE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAChD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,KAAK,UAAU,EAAE,CAAC;YACvE,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,KAAK,gBAAgB,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;IAC3F,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"check-labels.js","sourceRoot":"","sources":["../../src/check-labels.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnF,MAAM,CAAC,MAAM,WAAW,GAA6B,WAAW,CAAC;IAC/D,EAAE,EAAE,oBAAoB;IACxB,WAAW,EACT,+FAA+F;QAC/F,6FAA6F;QAC7F,yFAAyF;QACzF,+FAA+F;QAC/F,6FAA6F;QAC7F,qFAAqF;IACvF,uEAAuE;IACvE,+EAA+E;IAC/E,6EAA6E;IAC7E,yCAAyC;IACzC,QAAQ,EAAE,8BAA8B;IACxC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5B,SAAS,EAAE,OAAO;IAClB,uEAAuE;IACvE,6BAA6B;IAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,gEAAgE;IAChE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC7B,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/D,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,WAAW;QACX,OAAO,EAAE,UAAU,CACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAC5E;QACD,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;KACpE,CAAC;IACF,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACvB,0EAA0E;YAC1E,uEAAuE;YACvE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAChD,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,mBAAmB,KAAK,UAAU;oBAC1C,qEAAqE;oBACrE,qEAAqE;oBACrE,uCAAuC;oBACvC,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;iBAClF,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,UAAU,KAAK,gBAAgB,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,GAAG;YAC/D,kBAAkB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -13,7 +13,7 @@
13
13
  // assembles them.
14
14
  import { defineCheck, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
15
15
  import { countWord, exactCount, labelRef, mailboxRef, messageId, parseCount } from "./check-params.js";
16
- import { isTruncated, labelIdsFor, messageCarriesLabel, resolveMessage, } from "./check-state.js";
16
+ import { isTruncated, labelIdsFor, MESSAGE_LABELS_PATH, MESSAGES_PATH, messageCarriesLabel, missSkip, resolveMessage, } from "./check-state.js";
17
17
  import { finalWorld, gmailState, message, messageLabel, systemLabel, userLabel, } from "./check-worlds.js";
18
18
  // The workhorse of gmail's corpus: it binds three of the six criteria A3 found
19
19
  // unbound, because tasks 22 and 27 say the same sentence about `msg_support` and
@@ -56,15 +56,21 @@ export const messageHasLabel = defineCheck({
56
56
  evaluate({ message: id, label }, { final }) {
57
57
  const found = resolveMessage(final, id);
58
58
  if ("missing" in found)
59
- return { passed: false, status: "skipped", reason: found.missing };
59
+ return missSkip(found);
60
60
  const carried = messageCarriesLabel(final, id, label);
61
61
  if ("missing" in carried)
62
- return { passed: false, status: "skipped", reason: carried.missing };
62
+ return missSkip(carried);
63
63
  return {
64
64
  passed: carried.found,
65
65
  reason: carried.found
66
66
  ? `message ${id} carries label ${label}`
67
67
  : `message ${id} does not carry label ${label}`,
68
+ // BOTH halves of the lookup, because the predicate really does read two
69
+ // places: the message row it resolved by id, and the join table it then
70
+ // questioned. Labels are not nested under their message in this export —
71
+ // that is the whole reason `messageCarriesLabel` exists — so one pointer
72
+ // could not say where this verdict came from (F-1197).
73
+ evidenceStatePaths: [found.path, carried.path],
68
74
  };
69
75
  },
70
76
  });
@@ -134,6 +140,11 @@ export const mailboxLabelCount = defineCheck({
134
140
  return {
135
141
  passed: total === wanted,
136
142
  reason: `mailbox "${mailbox}" has ${total} message(s) labeled ${label} (wanted ${wanted})`,
143
+ // The two collections the count is computed FROM. The count itself lives
144
+ // nowhere in the tree, so there is no narrower honest address — and the
145
+ // guards above already established that both collections are present and
146
+ // un-capped, which is what makes these pointers resolve.
147
+ evidenceStatePaths: [MESSAGES_PATH, MESSAGE_LABELS_PATH],
137
148
  };
138
149
  },
139
150
  });
@@ -201,6 +212,11 @@ export const oneMessagePerRecipient = defineCheck({
201
212
  : `${sent.length} ${label} message(s) to ${distinct.size} distinct recipient(s) ` +
202
213
  `(${addressees.length} addressee slot(s)${wanted == null ? "" : `, wanted ${wanted}`}` +
203
214
  `${noDuplicates ? "" : ", duplicate send detected"})`,
215
+ // Same two collections, same reason: the duplicate this check exists to
216
+ // catch is a property of the addressee lists across `messages`, filtered
217
+ // by `messageLabels`, and neither the flattened list nor its distinct set
218
+ // is anything the tree holds.
219
+ evidenceStatePaths: [MESSAGES_PATH, MESSAGE_LABELS_PATH],
204
220
  };
205
221
  },
206
222
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check-messages.js","sourceRoot":"","sources":["../../src/check-messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-messages.js","sourceRoot":"","sources":["../../src/check-messages.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,mEAAmE;AACnE,EAAE;AACF,8EAA8E;AAC9E,oEAAoE;AACpE,oEAAoE;AACpE,6EAA6E;AAC7E,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,2EAA2E;AAC3E,kBAAkB;AAElB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EACL,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,cAAc,GAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,YAAY,EACZ,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAC/E,uCAAuC;AACvC,MAAM,CAAC,MAAM,eAAe,GAA8C,WAAW,CAAC;IACpF,EAAE,EAAE,yBAAyB;IAC7B,WAAW,EACT,6FAA6F;QAC7F,yFAAyF;QACzF,0FAA0F;QAC1F,wFAAwF;QACxF,2FAA2F;QAC3F,4FAA4F;QAC5F,qBAAqB;IACvB,QAAQ,EAAE,qCAAqC;IAC/C,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/C,SAAS,EAAE,OAAO;IAClB,6EAA6E;IAC7E,wCAAwC;IACxC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,0EAA0E;IAC1E,+EAA+E;IAC/E,qEAAqE;IACrE,iEAAiE;IACjE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC7B,2EAA2E;IAC3E,sEAAsE;IACtE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/D,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC/C,6EAA6E;QAC7E,8EAA8E;QAC9E,wEAAwE;QACxE,MAAM,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,UAAU,CACjB,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAC7F;YACD,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;SACzF,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;QACxC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,SAAS,IAAI,KAAK;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,SAAS,IAAI,OAAO;YAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO;YACL,MAAM,EAAE,OAAO,CAAC,KAAK;YACrB,MAAM,EAAE,OAAO,CAAC,KAAK;gBACnB,CAAC,CAAC,WAAW,EAAE,kBAAkB,KAAK,EAAE;gBACxC,CAAC,CAAC,WAAW,EAAE,yBAAyB,KAAK,EAAE;YACjD,wEAAwE;YACxE,wEAAwE;YACxE,yEAAyE;YACzE,yEAAyE;YACzE,uDAAuD;YACvD,kBAAkB,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAC5B,WAAW,CAAC;IACV,EAAE,EAAE,2BAA2B;IAC/B,WAAW,EACT,4FAA4F;QAC5F,4FAA4F;QAC5F,4FAA4F;QAC5F,uFAAuF;QACvF,uBAAuB;IACzB,QAAQ,EAAE,sEAAsE;IAChF,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnE,SAAS,EAAE,OAAO;IAClB,wEAAwE;IACxE,4EAA4E;IAC5E,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACxE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC7B,yEAAyE;IACzE,6EAA6E;IAC7E,6DAA6D;IAC7D,kEAAkE;IAClE,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/D,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAmB,EAAE;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACrG,OAAO,UAAU,CAAC;gBAChB,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBAC/B,QAAQ;gBACR,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC5B,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;aACjG,CAAC,CAAC;QACL,CAAC,CAAC;QACF,6EAA6E;QAC7E,qEAAqE;QACrE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,CAAC;IACD,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QAC1E,CAAC;QACD,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAC9E,CAAC;QACD,yEAAyE;QACzE,uEAAuE;QACvE,oEAAoE;QACpE,IACE,KAAK,CAAC,SAAS,IAAI,IAAI;YACvB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,EACvF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,uBAAuB,OAAO,IAAI,EAAE,CAAC;QAC1F,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,KAAK,CAAC,aAAa;aAChB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;aAC3D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE;YAChE,GAAG,CAAC,EAAE,IAAI,IAAI;YACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CACpC,CAAC,MAAM,CAAC;QACT,OAAO;YACL,MAAM,EAAE,KAAK,KAAK,MAAM;YACxB,MAAM,EAAE,YAAY,OAAO,SAAS,KAAK,uBAAuB,KAAK,YAAY,MAAM,GAAG;YAC1F,yEAAyE;YACzE,wEAAwE;YACxE,yEAAyE;YACzE,yDAAyD;YACzD,kBAAkB,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC;SACzD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEL,gFAAgF;AAChF,8EAA8E;AAC9E,iEAAiE;AACjE,MAAM,CAAC,MAAM,sBAAsB,GAA4C,WAAW,CAAC;IACzF,EAAE,EAAE,iCAAiC;IACrC,WAAW,EACT,yFAAyF;QACzF,sFAAsF;QACtF,4FAA4F;QAC5F,2FAA2F;QAC3F,uCAAuC;IACzC,QAAQ,EAAE,4EAA4E;IACtF,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IAC7C,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK;IAC7B,4EAA4E;IAC5E,6CAA6C;IAC7C,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/D,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,CAAC,UAAsB,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACxE,OAAO,UAAU,CACf,UAAU,CAAC;gBACT,QAAQ;gBACR,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC5B,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAG,EAAE,KAAK,CAAC,CAAC;aAC/D,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QACF,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,0EAA0E;YAC1E,oEAAoE;YACpE,4EAA4E;YAC5E,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;SAC7F,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;QAClC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QAC1E,CAAC;QACD,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAC9E,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,KAAK,CAAC,aAAa;aAChB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;aAC3D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CACrD,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC;QACzD,MAAM,OAAO,GACX,MAAM,IAAI,IAAI;YACZ,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI;YAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC;QACzF,MAAM,MAAM,GAAG,YAAY,IAAI,OAAO,CAAC;QACvC,OAAO;YACL,MAAM;YACN,MAAM,EAAE,MAAM;gBACZ,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,wDAAwD;gBACjF,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,kBAAkB,QAAQ,CAAC,IAAI,yBAAyB;oBAC/E,IAAI,UAAU,CAAC,MAAM,qBAAqB,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,EAAE;oBACtF,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,GAAG;YACzD,wEAAwE;YACxE,yEAAyE;YACzE,0EAA0E;YAC1E,8BAA8B;YAC9B,kBAAkB,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC;SACzD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1,10 +1,35 @@
1
+ import { type CheckOutcome } from "@pome-sh/sdk/checks";
1
2
  /** A resolver must be able to say WHY it found nothing: the ways of finding
2
- * nothing get different verdicts. Same shape and same reason as twin-github's. */
3
+ * nothing get different verdicts. Same shape and same reason as twin-github's.
4
+ *
5
+ * F-1197 added the pointers, also twin-github's: `path` is where the resolution
6
+ * landed, `searched` is the collection a failed lookup scanned. Both optional on
7
+ * the missing arm because gmail's commonest refusal is `state_incomplete` — the
8
+ * collection is absent from the export entirely, so there is nowhere to point
9
+ * and citing anything would be an affordance to nowhere. */
3
10
  export type Resolved<T> = {
4
11
  found: T;
12
+ path: string;
5
13
  } | {
6
14
  missing: string;
15
+ searched?: string;
7
16
  };
17
+ /** The exported collections a pointer can address. Named because six
18
+ * declarations reach for them and a literal `"/messageLabels"` typed out six
19
+ * times is six chances to typo one into a pointer that resolves to nothing —
20
+ * and the mis-cased `/messagelabels` would look right in a diff. */
21
+ export declare const MESSAGES_PATH: string;
22
+ export declare const DRAFTS_PATH: string;
23
+ export declare const LABELS_PATH: string;
24
+ export declare const MESSAGE_LABELS_PATH: string;
25
+ /** The `skipped` outcome an unresolvable lookup produces, citing where it
26
+ * looked. Gmail abstains where twin-github fails — a message the export does
27
+ * not carry cannot be attested either way — so this is `missOutcome` with
28
+ * `skipped`, exactly as twin-slack's `missSkip` is. */
29
+ export declare function missSkip(miss: {
30
+ missing: string;
31
+ searched?: string;
32
+ }): CheckOutcome;
8
33
  export interface GmailCheckStateMailbox {
9
34
  email?: string;
10
35
  displayName?: string;
@@ -34,6 +34,25 @@
34
34
  // (`Label_follow_up` / `Follow Up`); a system label carries `id === name`.
35
35
  // - EVERYTHING IS MAILBOX-SCOPED via `mailboxEmail`, and ids are minted per
36
36
  // mailbox, so `deliveryMode: "seeded-mailboxes"` can put one id in two.
37
+ import { childStatePath, statePath } from "@pome-sh/sdk/checks";
38
+ /** The exported collections a pointer can address. Named because six
39
+ * declarations reach for them and a literal `"/messageLabels"` typed out six
40
+ * times is six chances to typo one into a pointer that resolves to nothing —
41
+ * and the mis-cased `/messagelabels` would look right in a diff. */
42
+ export const MESSAGES_PATH = statePath("messages");
43
+ export const DRAFTS_PATH = statePath("drafts");
44
+ export const LABELS_PATH = statePath("labels");
45
+ export const MESSAGE_LABELS_PATH = statePath("messageLabels");
46
+ /** The `skipped` outcome an unresolvable lookup produces, citing where it
47
+ * looked. Gmail abstains where twin-github fails — a message the export does
48
+ * not carry cannot be attested either way — so this is `missOutcome` with
49
+ * `skipped`, exactly as twin-slack's `missSkip` is. */
50
+ export function missSkip(miss) {
51
+ const outcome = { passed: false, status: "skipped", reason: miss.missing };
52
+ if (miss.searched === undefined)
53
+ return outcome;
54
+ return { ...outcome, evidenceStatePaths: [miss.searched] };
55
+ }
37
56
  const lower = (value) => (value ?? "").toLowerCase();
38
57
  /**
39
58
  * Was this collection capped on the way out?
@@ -65,15 +84,26 @@ export function isTruncated(state, collection) {
65
84
  export function resolveMessage(state, id) {
66
85
  if (state.messages == null)
67
86
  return { missing: "state_incomplete" };
68
- const hits = state.messages.filter((message) => lower(message.id) === lower(id));
69
- if (hits.length > 1) {
70
- return { missing: `message_ambiguous ("${id}" exists in ${hits.length} mailboxes)` };
87
+ const indices = state.messages
88
+ .map((message, index) => (lower(message.id) === lower(id) ? index : -1))
89
+ .filter((index) => index >= 0);
90
+ if (indices.length > 1) {
91
+ // The AMBIGUITY is the finding, so the citation is the collection rather
92
+ // than one of the candidates: pointing at either would present a coin-flip
93
+ // as the thing the check read.
94
+ return {
95
+ missing: `message_ambiguous ("${id}" exists in ${indices.length} mailboxes)`,
96
+ searched: MESSAGES_PATH,
97
+ };
98
+ }
99
+ if (indices.length === 1) {
100
+ const index = indices[0];
101
+ return { found: state.messages[index], path: childStatePath(MESSAGES_PATH, index) };
102
+ }
103
+ if (isTruncated(state, "messages")) {
104
+ return { missing: 'collection_truncated ("messages")', searched: MESSAGES_PATH };
71
105
  }
72
- if (hits.length === 1)
73
- return { found: hits[0] };
74
- if (isTruncated(state, "messages"))
75
- return { missing: 'collection_truncated ("messages")' };
76
- return { missing: `message_not_found ("${id}")` };
106
+ return { missing: `message_not_found ("${id}")`, searched: MESSAGES_PATH };
77
107
  }
78
108
  /**
79
109
  * Every label id that counts as `wanted`, lower-cased for comparison.
@@ -106,9 +136,13 @@ export function messageCarriesLabel(state, messageId, wanted) {
106
136
  const ids = labelIdsFor(state, wanted);
107
137
  const carried = state.messageLabels.some((row) => lower(row.messageId) === lower(messageId) && ids.has(lower(row.labelId)));
108
138
  if (!carried && isTruncated(state, "messageLabels")) {
109
- return { missing: 'collection_truncated ("messageLabels")' };
139
+ return { missing: 'collection_truncated ("messageLabels")', searched: MESSAGE_LABELS_PATH };
110
140
  }
111
- return { found: carried };
141
+ // The JOIN, not a row in it. The answer is a boolean this function computed
142
+ // and the tree holds no such value, so the honest address is the table the
143
+ // question was asked of — and on the `false` side there is no row to name at
144
+ // all, which is exactly the arm a reader wants to check.
145
+ return { found: carried, path: MESSAGE_LABELS_PATH };
112
146
  }
113
147
  /**
114
148
  * The label a criterion names BY NAME.
@@ -121,12 +155,14 @@ export function messageCarriesLabel(state, messageId, wanted) {
121
155
  export function resolveLabelByName(state, name) {
122
156
  if (state.labels == null)
123
157
  return { missing: "state_incomplete" };
124
- const hit = state.labels.find((label) => lower(label.name) === lower(name));
125
- if (hit)
126
- return { found: hit };
127
- if (isTruncated(state, "labels"))
128
- return { missing: 'collection_truncated ("labels")' };
129
- return { missing: `label_not_found ("${name}")` };
158
+ const index = state.labels.findIndex((label) => lower(label.name) === lower(name));
159
+ if (index >= 0) {
160
+ return { found: state.labels[index], path: childStatePath(LABELS_PATH, index) };
161
+ }
162
+ if (isTruncated(state, "labels")) {
163
+ return { missing: 'collection_truncated ("labels")', searched: LABELS_PATH };
164
+ }
165
+ return { missing: `label_not_found ("${name}")`, searched: LABELS_PATH };
130
166
  }
131
167
  /**
132
168
  * Who a draft is addressed to — `to` + `cc`, from the backing MESSAGE.