@pome-sh/cli 0.19.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 (89) hide show
  1. package/dist/build-info.json +3 -3
  2. package/node_modules/@hono/node-server/README.md +47 -1
  3. package/node_modules/@hono/node-server/dist/early-hints.cjs +35 -0
  4. package/node_modules/@hono/node-server/dist/early-hints.d.cts +16 -0
  5. package/node_modules/@hono/node-server/dist/early-hints.d.mts +16 -0
  6. package/node_modules/@hono/node-server/dist/early-hints.mjs +33 -0
  7. package/node_modules/@hono/node-server/dist/index.cjs +10 -6
  8. package/node_modules/@hono/node-server/dist/index.mjs +10 -6
  9. package/node_modules/@hono/node-server/package.json +14 -3
  10. package/node_modules/@pome-sh/sdk/package.json +4 -4
  11. package/node_modules/@pome-sh/shared-types/package.json +1 -1
  12. package/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
  13. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.d.ts +3 -0
  14. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js +86 -1
  15. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js.map +1 -1
  16. package/node_modules/@pome-sh/twin-github/dist/src/check-state.d.ts +1 -0
  17. package/node_modules/@pome-sh/twin-github/dist/src/check-state.js +15 -0
  18. package/node_modules/@pome-sh/twin-github/dist/src/check-state.js.map +1 -1
  19. package/node_modules/@pome-sh/twin-github/dist/src/checks.d.ts +2 -0
  20. package/node_modules/@pome-sh/twin-github/dist/src/checks.js +5 -1
  21. package/node_modules/@pome-sh/twin-github/dist/src/checks.js.map +1 -1
  22. package/node_modules/@pome-sh/twin-github/package.json +6 -6
  23. package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +7 -0
  24. package/node_modules/@pome-sh/twin-gmail/package.json +5 -5
  25. package/node_modules/@pome-sh/twin-linear/CHANGELOG.md +7 -0
  26. package/node_modules/@pome-sh/twin-linear/package.json +5 -5
  27. package/node_modules/@pome-sh/twin-slack/package.json +6 -6
  28. package/node_modules/@pome-sh/twin-stripe/package.json +6 -6
  29. package/node_modules/hono/dist/cjs/context.js +28 -13
  30. package/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
  31. package/node_modules/hono/dist/cjs/hono-base.js +3 -2
  32. package/node_modules/hono/dist/cjs/jsx/base.js +27 -23
  33. package/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
  34. package/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
  35. package/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
  36. package/node_modules/hono/dist/cjs/middleware/cors/index.js +2 -2
  37. package/node_modules/hono/dist/cjs/middleware/etag/index.js +1 -1
  38. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
  39. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
  40. package/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
  41. package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
  42. package/node_modules/hono/dist/cjs/request.js +6 -8
  43. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +55 -56
  44. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +64 -85
  45. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +13 -5
  46. package/node_modules/hono/dist/cjs/router.js +1 -1
  47. package/node_modules/hono/dist/cjs/utils/cookie.js +3 -2
  48. package/node_modules/hono/dist/cjs/utils/url.js +7 -7
  49. package/node_modules/hono/dist/context.js +28 -13
  50. package/node_modules/hono/dist/helper/proxy/index.js +4 -0
  51. package/node_modules/hono/dist/hono-base.js +3 -2
  52. package/node_modules/hono/dist/jsx/base.js +27 -23
  53. package/node_modules/hono/dist/jsx/hooks/index.js +16 -13
  54. package/node_modules/hono/dist/middleware/cache/index.js +103 -8
  55. package/node_modules/hono/dist/middleware/compress/index.js +5 -0
  56. package/node_modules/hono/dist/middleware/cors/index.js +2 -2
  57. package/node_modules/hono/dist/middleware/etag/index.js +1 -1
  58. package/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
  59. package/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
  60. package/node_modules/hono/dist/middleware/language/language.js +10 -6
  61. package/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
  62. package/node_modules/hono/dist/request.js +7 -9
  63. package/node_modules/hono/dist/router/reg-exp-router/node.js +55 -56
  64. package/node_modules/hono/dist/router/reg-exp-router/router.js +64 -85
  65. package/node_modules/hono/dist/router/reg-exp-router/trie.js +13 -5
  66. package/node_modules/hono/dist/router.js +1 -1
  67. package/node_modules/hono/dist/types/client/types.d.ts +1 -1
  68. package/node_modules/hono/dist/types/hono-base.d.ts +4 -3
  69. package/node_modules/hono/dist/types/jsx/base.d.ts +4 -2
  70. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
  71. package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
  72. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
  73. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
  74. package/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
  75. package/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
  76. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
  77. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
  78. package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
  79. package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
  80. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
  81. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +1 -1
  82. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
  83. package/node_modules/hono/dist/types/router.d.ts +1 -1
  84. package/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
  85. package/node_modules/hono/dist/types/utils/url.d.ts +1 -0
  86. package/node_modules/hono/dist/utils/cookie.js +4 -3
  87. package/node_modules/hono/dist/utils/url.js +5 -6
  88. package/node_modules/hono/package.json +10 -3
  89. package/package.json +21 -21
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "pome-sh",
3
- "version": "0.19.0",
4
- "git_sha": "f6fc19d8c27d039a35859dd942d4f0783671b695",
5
- "build_time": "2026-08-04T00:45:27.607Z"
3
+ "version": "0.20.0",
4
+ "git_sha": "4f64f517734b8b43ebd4bb8968a388e6b089dc62",
5
+ "build_time": "2026-08-04T21:23:39.046Z"
6
6
  }
@@ -86,7 +86,7 @@ app.get(
86
86
  }))
87
87
  )
88
88
 
89
- const wss = new WebSocketServer({ noServer: true }) // important to create with `noServer: true`
89
+ const wss = new WebSocketServer({ noServer: true })
90
90
  serve({
91
91
  fetch: app.fetch,
92
92
  websocket: { server: wss },
@@ -332,6 +332,52 @@ type Http2Bindings = {
332
332
  }
333
333
  ```
334
334
 
335
+ ## Early Hints Middleware
336
+
337
+ You can send HTTP 103 Early Hints to instruct browsers to preload or preconnect resources before the final response is prepared. The middleware is supported under Node.js bindings (HTTP/1.1 and HTTP/2).
338
+
339
+ ### Usage
340
+
341
+ Import `earlyHints` from `@hono/node-server/early-hints`:
342
+
343
+ #### Static links
344
+
345
+ ```ts
346
+ import { serve } from '@hono/node-server'
347
+ import { earlyHints } from '@hono/node-server/early-hints'
348
+ import { Hono } from 'hono'
349
+
350
+ const app = new Hono()
351
+
352
+ app.use(
353
+ earlyHints({
354
+ link: '</styles.css>; rel=preload; as=style',
355
+ })
356
+ )
357
+
358
+ app.get('/', (c) => {
359
+ return c.html('<!DOCTYPE html><html><body><h1>Hello Hono!</h1></body></html>')
360
+ })
361
+
362
+ serve(app)
363
+ ```
364
+
365
+ #### Dynamic links
366
+
367
+ ```ts
368
+ app.use(
369
+ earlyHints({
370
+ link: (c) =>
371
+ c.req.query('theme') === 'dark'
372
+ ? '</dark.css>; rel=preload; as=style'
373
+ : '</light.css>; rel=preload; as=style',
374
+ })
375
+ )
376
+ ```
377
+
378
+ > [!NOTE]
379
+ > Early Hints are sent only for requests that look like document navigations. If `Sec-Fetch-Mode` or `Sec-Fetch-Dest` is present with a value other than `navigate` or `document`, for example a `fetch()` or XHR call from a browser, a subresource request, or an iframe navigation, the middleware skips the hints and continues to the handler. Requests without these headers, such as `curl` or `fetch()` from a JavaScript runtime, are treated as navigations and do receive Early Hints.
380
+
335
381
  ## Direct response from Node.js API
336
382
 
337
383
  You can directly respond to the client from the Node.js API.
@@ -0,0 +1,35 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/early-hints.ts
4
+ /**
5
+ * Early Hints middleware for Node.js
6
+ * Automatically sends a 103 Early Hints informational response with the specified Link header(s).
7
+ *
8
+ * @param options EarlyHintsOptions
9
+ * @returns MiddlewareHandler
10
+ */
11
+ const earlyHints = (options) => {
12
+ let warned = false;
13
+ return async (c, next) => {
14
+ const mode = c.req.header("Sec-Fetch-Mode");
15
+ const dest = c.req.header("Sec-Fetch-Dest");
16
+ if (mode && mode !== "navigate" || dest && dest !== "document") return next();
17
+ const env = c.env || {};
18
+ const outgoing = (env.server ? env.server : env)?.outgoing;
19
+ if (typeof outgoing?.writeEarlyHints !== "function") {
20
+ if (!warned) {
21
+ console.warn("Early Hints Middleware is not supported because writeEarlyHints is not defined.");
22
+ warned = true;
23
+ }
24
+ return await next();
25
+ }
26
+ if (!outgoing.headersSent) {
27
+ const link = typeof options.link === "function" ? options.link(c) : options.link;
28
+ if (link !== void 0 && (Array.isArray(link) ? link.length > 0 : Boolean(link))) outgoing.writeEarlyHints({ link });
29
+ }
30
+ await next();
31
+ };
32
+ };
33
+
34
+ //#endregion
35
+ exports.earlyHints = earlyHints;
@@ -0,0 +1,16 @@
1
+ import { Context, Env, MiddlewareHandler } from "hono";
2
+
3
+ //#region src/early-hints.d.ts
4
+ type EarlyHintsOptions<E extends Env = Env> = {
5
+ link: string | string[] | ((c: Context<E>) => string | string[] | undefined);
6
+ };
7
+ /**
8
+ * Early Hints middleware for Node.js
9
+ * Automatically sends a 103 Early Hints informational response with the specified Link header(s).
10
+ *
11
+ * @param options EarlyHintsOptions
12
+ * @returns MiddlewareHandler
13
+ */
14
+ declare const earlyHints: <E extends Env = any>(options: EarlyHintsOptions<E>) => MiddlewareHandler<E>;
15
+ //#endregion
16
+ export { EarlyHintsOptions, earlyHints };
@@ -0,0 +1,16 @@
1
+ import { Context, Env, MiddlewareHandler } from "hono";
2
+
3
+ //#region src/early-hints.d.ts
4
+ type EarlyHintsOptions<E extends Env = Env> = {
5
+ link: string | string[] | ((c: Context<E>) => string | string[] | undefined);
6
+ };
7
+ /**
8
+ * Early Hints middleware for Node.js
9
+ * Automatically sends a 103 Early Hints informational response with the specified Link header(s).
10
+ *
11
+ * @param options EarlyHintsOptions
12
+ * @returns MiddlewareHandler
13
+ */
14
+ declare const earlyHints: <E extends Env = any>(options: EarlyHintsOptions<E>) => MiddlewareHandler<E>;
15
+ //#endregion
16
+ export { EarlyHintsOptions, earlyHints };
@@ -0,0 +1,33 @@
1
+ //#region src/early-hints.ts
2
+ /**
3
+ * Early Hints middleware for Node.js
4
+ * Automatically sends a 103 Early Hints informational response with the specified Link header(s).
5
+ *
6
+ * @param options EarlyHintsOptions
7
+ * @returns MiddlewareHandler
8
+ */
9
+ const earlyHints = (options) => {
10
+ let warned = false;
11
+ return async (c, next) => {
12
+ const mode = c.req.header("Sec-Fetch-Mode");
13
+ const dest = c.req.header("Sec-Fetch-Dest");
14
+ if (mode && mode !== "navigate" || dest && dest !== "document") return next();
15
+ const env = c.env || {};
16
+ const outgoing = (env.server ? env.server : env)?.outgoing;
17
+ if (typeof outgoing?.writeEarlyHints !== "function") {
18
+ if (!warned) {
19
+ console.warn("Early Hints Middleware is not supported because writeEarlyHints is not defined.");
20
+ warned = true;
21
+ }
22
+ return await next();
23
+ }
24
+ if (!outgoing.headersSent) {
25
+ const link = typeof options.link === "function" ? options.link(c) : options.link;
26
+ if (link !== void 0 && (Array.isArray(link) ? link.length > 0 : Boolean(link))) outgoing.writeEarlyHints({ link });
27
+ }
28
+ await next();
29
+ };
30
+ };
31
+
32
+ //#endregion
33
+ export { earlyHints };
@@ -193,8 +193,10 @@ const normalizeIncomingMethod = (method) => {
193
193
  case "GET":
194
194
  case "HEAD":
195
195
  case "OPTIONS":
196
+ case "PATCH":
196
197
  case "POST":
197
- case "PUT": return method;
198
+ case "PUT":
199
+ case "QUERY": return method;
198
200
  }
199
201
  const upper = method.toUpperCase();
200
202
  switch (upper) {
@@ -492,16 +494,15 @@ var Response$1 = class Response$1 {
492
494
  constructor(body, init) {
493
495
  let headers;
494
496
  this.#body = body;
495
- if (init instanceof Response$1) {
497
+ if (init instanceof GlobalResponse) {
496
498
  const cachedGlobalResponse = init[responseCache];
497
499
  if (cachedGlobalResponse) {
498
500
  this.#init = cachedGlobalResponse;
499
501
  this[getResponseCache]();
500
502
  return;
501
- } else {
502
- this.#init = init.#init;
503
- headers = new Headers(init.headers);
504
503
  }
504
+ this.#init = init instanceof Response$1 ? init.#init : init;
505
+ headers = new Headers(init.headers);
505
506
  } else this.#init = init;
506
507
  if (body == null || typeof body === "string" || typeof body?.getReader !== "undefined" || body instanceof Blob || body instanceof Uint8Array) this[cacheKey] = [
507
508
  init?.status || 200,
@@ -683,7 +684,10 @@ const drainIncoming = (incoming) => {
683
684
  const forceClose = () => {
684
685
  cleanup();
685
686
  const socket = incoming.socket;
686
- if (socket && !socket.destroyed) socket.destroySoon();
687
+ if (socket && !socket.destroyed) {
688
+ if (typeof socket.destroySoon === "function") socket.destroySoon();
689
+ else if (typeof socket.destroy === "function") socket.destroy();
690
+ }
687
691
  };
688
692
  const timer = setTimeout(forceClose, DRAIN_TIMEOUT_MS);
689
693
  timer.unref?.();
@@ -192,8 +192,10 @@ const normalizeIncomingMethod = (method) => {
192
192
  case "GET":
193
193
  case "HEAD":
194
194
  case "OPTIONS":
195
+ case "PATCH":
195
196
  case "POST":
196
- case "PUT": return method;
197
+ case "PUT":
198
+ case "QUERY": return method;
197
199
  }
198
200
  const upper = method.toUpperCase();
199
201
  switch (upper) {
@@ -491,16 +493,15 @@ var Response$1 = class Response$1 {
491
493
  constructor(body, init) {
492
494
  let headers;
493
495
  this.#body = body;
494
- if (init instanceof Response$1) {
496
+ if (init instanceof GlobalResponse) {
495
497
  const cachedGlobalResponse = init[responseCache];
496
498
  if (cachedGlobalResponse) {
497
499
  this.#init = cachedGlobalResponse;
498
500
  this[getResponseCache]();
499
501
  return;
500
- } else {
501
- this.#init = init.#init;
502
- headers = new Headers(init.headers);
503
502
  }
503
+ this.#init = init instanceof Response$1 ? init.#init : init;
504
+ headers = new Headers(init.headers);
504
505
  } else this.#init = init;
505
506
  if (body == null || typeof body === "string" || typeof body?.getReader !== "undefined" || body instanceof Blob || body instanceof Uint8Array) this[cacheKey] = [
506
507
  init?.status || 200,
@@ -682,7 +683,10 @@ const drainIncoming = (incoming) => {
682
683
  const forceClose = () => {
683
684
  cleanup();
684
685
  const socket = incoming.socket;
685
- if (socket && !socket.destroyed) socket.destroySoon();
686
+ if (socket && !socket.destroyed) {
687
+ if (typeof socket.destroySoon === "function") socket.destroySoon();
688
+ else if (typeof socket.destroy === "function") socket.destroy();
689
+ }
686
690
  };
687
691
  const timer = setTimeout(forceClose, DRAIN_TIMEOUT_MS);
688
692
  timer.unref?.();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hono/node-server",
3
- "version": "2.0.10",
3
+ "version": "2.1.0",
4
4
  "description": "Node.js Adapter for Hono",
5
5
  "main": "dist/index.mjs",
6
6
  "type": "module",
@@ -48,6 +48,16 @@
48
48
  "types": "./dist/conninfo.d.cts",
49
49
  "default": "./dist/conninfo.cjs"
50
50
  }
51
+ },
52
+ "./early-hints": {
53
+ "import": {
54
+ "types": "./dist/early-hints.d.mts",
55
+ "default": "./dist/early-hints.mjs"
56
+ },
57
+ "require": {
58
+ "types": "./dist/early-hints.d.cts",
59
+ "default": "./dist/early-hints.cjs"
60
+ }
51
61
  }
52
62
  },
53
63
  "typesVersions": {
@@ -63,6 +73,9 @@
63
73
  ],
64
74
  "conninfo": [
65
75
  "./dist/conninfo.d.mts"
76
+ ],
77
+ "early-hints": [
78
+ "./dist/early-hints.d.mts"
66
79
  ]
67
80
  }
68
81
  },
@@ -84,7 +97,6 @@
84
97
  "devDependencies": {
85
98
  "@hono/eslint-config": "^1.0.1",
86
99
  "@types/node": "^20.10.0",
87
- "@types/supertest": "^2.0.12",
88
100
  "@types/ws": "^8.18.1",
89
101
  "@whatwg-node/fetch": "^0.9.14",
90
102
  "eslint": "^9.10.0",
@@ -92,7 +104,6 @@
92
104
  "np": "^11.2.1",
93
105
  "prettier": "^3.2.4",
94
106
  "publint": "^0.3.18",
95
- "supertest": "^7.2.2",
96
107
  "tsdown": "^0.20.3",
97
108
  "typescript": "^5.3.2",
98
109
  "vitest": "^4.0.18",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/sdk",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "Twin engine for Pome digital twins — defineTwin() + serve(): HTTP mounting, bearer auth, trace recorder, MCP dispatch, SQLite-backed state.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -40,9 +40,9 @@
40
40
  "dist"
41
41
  ],
42
42
  "dependencies": {
43
- "@pome-sh/shared-types": "0.14.0",
44
- "hono": "^4.12.31",
45
- "zod": "^4.1.13"
43
+ "@pome-sh/shared-types": "0.14.1",
44
+ "hono": "^4.13.0",
45
+ "zod": "^4.4.3"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@hono/node-server": "^2.0.8"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/shared-types",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "description": "Shared wire-format contract for Pome — Zod schemas for traces, recorder events, runs, OTel mapping, and secret redaction.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@pome-sh/shared-types",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "zod": {
5
5
  "range": "^4.1.13",
6
6
  "major": 4
@@ -2,6 +2,9 @@ import type { Check } from "./check-kind.js";
2
2
  export declare const noNewLabels: Check<{
3
3
  repo: string;
4
4
  }>;
5
+ export declare const noNewIssues: Check<{
6
+ repo: string;
7
+ }>;
5
8
  export declare const fileExists: Check<{
6
9
  path: string;
7
10
  repo: string;
@@ -7,7 +7,7 @@
7
7
  // assembles them; how the exported tree is read is in `check-state.ts`.
8
8
  import { childStatePath, defineCheck, repoRef, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
9
9
  import { commitStatusState, filePath, statusContext } from "./check-params.js";
10
- import { labelNames, missOutcome, resolveRepo } from "./check-state.js";
10
+ import { issueNumbers, labelNames, missOutcome, resolveRepo } from "./check-state.js";
11
11
  import { deltaWorld, finalWorld, repoState } from "./check-worlds.js";
12
12
  export const noNewLabels = defineCheck({
13
13
  id: "github.no-new-labels",
@@ -87,6 +87,91 @@ export const noNewLabels = defineCheck({
87
87
  };
88
88
  },
89
89
  });
90
+ // F-1198. The sibling of `noNewLabels`, and it exists because the curriculum's
91
+ // hero lesson could not be graded without it: `support-triage` teaches "do not
92
+ // open a second issue for a bug that is already tracked", and until this check
93
+ // the only way to say that was `[model]`. An agent that comments on the right
94
+ // issue, posts the right link, AND ALSO files a duplicate scored 100 — which is
95
+ // τ-bench's necessary-but-not-sufficient caveat arriving in our own catalog
96
+ // (`docs/curriculum/failure-classes.md` §4.2, which names the rule we were
97
+ // breaking).
98
+ //
99
+ // Modelled on `noNewLabels` rather than invented: same delta substrate, same
100
+ // negative polarity, same "the repo is a selector" mutant argument. The one
101
+ // difference worth stating is WHAT is compared. Labels compare NAMES because a
102
+ // label is identified by its name; issues compare NUMBERS, because the number is
103
+ // the only field an examinee cannot choose — a duplicate issue may carry the
104
+ // same title, body and labels as the one it duplicates, and comparing any of
105
+ // those would let a duplicate hide behind its own likeness.
106
+ export const noNewIssues = defineCheck({
107
+ id: "github.no-new-issues",
108
+ description: "Compares the issue NUMBERS present in the seed against the final state, and fails when " +
109
+ "finish carries one the seed did not. Numbers, not titles: a duplicate issue usually " +
110
+ "carries the same title as the one it duplicates. It says nothing about what happened to " +
111
+ "the seeded issues — closing, relabelling or commenting on one all PASS this check, so " +
112
+ "pair it with `github.issue-state` or `github.issue-comment-contains` when those matter. " +
113
+ "Its natural use is the inverse of `github.issue-exists`: a task whose examinee must " +
114
+ "recognise that an issue already exists and NOT open another. Needs the seed: it is a " +
115
+ "delta, not a state assertion.",
116
+ // The repo is named for `noNewLabels`'s reason, one step stronger: without it
117
+ // the sentence reads as a claim about the whole world, and issue numbers are
118
+ // per-repository — `#2` in one repo has nothing to do with `#2` in another.
119
+ template: "No new issues were created in `{repo}`",
120
+ params: { repo: repoRef },
121
+ substrate: "seed+final",
122
+ // Passes on the untouched seed; only the examinee acting can break it.
123
+ polarity: () => "negative",
124
+ // Nothing is hunted inside free text, so there is nothing a redactor could
125
+ // delete out from under this check.
126
+ subject: () => null,
127
+ // Same admission `noNewLabels` makes: the repo SELECTS, it is not a scanned
128
+ // literal. Falsifying it moves the verdict to "repo not found" for a reason
129
+ // that never reaches the comparison — a clean bill this check did not earn.
130
+ vacuityMutant: () => null,
131
+ discriminatingWorlds: () => ({
132
+ passing: deltaWorld(repoState({ issues: [{ number: 1 }] }), repoState({ issues: [{ number: 1 }] })),
133
+ failing: deltaWorld(repoState({ issues: [{ number: 1 }] }), repoState({ issues: [{ number: 1 }, { number: 2 }] })),
134
+ }),
135
+ evaluate({ repo }, { seed, final }) {
136
+ // The engine guards this before calling; guarding here too means a consumer
137
+ // that forgets gets a named skip rather than a vacuous pass.
138
+ if (seed === null)
139
+ return { passed: false, reason: "seed_missing", status: "skipped" };
140
+ // The seed-side refusal cites nothing, for the reason `noNewLabels` states
141
+ // at the same line: a pointer always addresses `final`, so handing back one
142
+ // the lookup walked in the SEED would send a reader into a tree the report
143
+ // never renders. The reason still names the miss.
144
+ const seedRepo = resolveRepo(seed, repo, "the seed state");
145
+ if ("missing" in seedRepo)
146
+ return missOutcome({ ...seedRepo, searched: undefined });
147
+ const finalRepo = resolveRepo(final, repo, "state_final");
148
+ if ("missing" in finalRepo)
149
+ return missOutcome(finalRepo);
150
+ const before = issueNumbers(seedRepo.found);
151
+ const created = [...issueNumbers(finalRepo.found)]
152
+ .filter((number) => !before.has(number))
153
+ .sort((a, b) => a - b);
154
+ // The final issue LIST, not the rows that broke it — the same citation
155
+ // `noNewLabels` makes and for the same reason. The delta is computed from
156
+ // two trees and the reader has one on screen, so the honest pointer is the
157
+ // collection they can count for themselves; the reason carries the
158
+ // comparison. On a failure it is also the only pointer that resolves: the
159
+ // numbers named in the reason are exactly the rows the seed does not have.
160
+ const issues = [childStatePath(finalRepo.path, "issues")];
161
+ if (created.length === 0) {
162
+ return {
163
+ passed: true,
164
+ reason: `no issues were created in ${repo} (${before.size} at seed, unchanged at finish)`,
165
+ evidenceStatePaths: issues,
166
+ };
167
+ }
168
+ return {
169
+ passed: false,
170
+ reason: `issues created in ${repo}: ${created.map((number) => `#${number}`).join(", ")}`,
171
+ evidenceStatePaths: issues,
172
+ };
173
+ },
174
+ });
90
175
  export const fileExists = defineCheck({
91
176
  id: "github.file-exists",
92
177
  description: "Asserts a file with this exact path exists in the repository on ANY branch — the twin " +
@@ -1 +1 @@
1
- {"version":3,"file":"check-repos.js","sourceRoot":"","sources":["../../src/check-repos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-repos.js","sourceRoot":"","sources":["../../src/check-repos.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,7 @@ export declare function findRepo(state: GitHubCheckState, ref: string): {
47
47
  repo: GitHubCheckStateRepo;
48
48
  index: number;
49
49
  } | null;
50
+ export declare function issueNumbers(repo: GitHubCheckStateRepo): Set<number>;
50
51
  export declare function labelNames(repo: GitHubCheckStateRepo): Set<string>;
51
52
  export type Resolved<T> = {
52
53
  found: T;
@@ -49,6 +49,21 @@ export function findRepo(state, ref) {
49
49
  }
50
50
  return null;
51
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
+ }
52
67
  export function labelNames(repo) {
53
68
  const names = new Set();
54
69
  for (const label of repo.labels ?? []) {
@@ -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.2",
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.11.0",
38
- "@pome-sh/shared-types": "0.14.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,6 +1,13 @@
1
1
  # @pome-sh/twin-gmail — CHANGELOG
2
2
 
3
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
+
4
11
  ## 0.3.2 — 2026-08-04
5
12
 
6
13
  - Re-pinned to `@pome-sh/sdk@0.11.0` for the F-1200 parent-vocabulary