@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.
- package/dist/build-info.json +3 -3
- package/node_modules/@hono/node-server/README.md +47 -1
- package/node_modules/@hono/node-server/dist/early-hints.cjs +35 -0
- package/node_modules/@hono/node-server/dist/early-hints.d.cts +16 -0
- package/node_modules/@hono/node-server/dist/early-hints.d.mts +16 -0
- package/node_modules/@hono/node-server/dist/early-hints.mjs +33 -0
- package/node_modules/@hono/node-server/dist/index.cjs +10 -6
- package/node_modules/@hono/node-server/dist/index.mjs +10 -6
- package/node_modules/@hono/node-server/package.json +14 -3
- package/node_modules/@pome-sh/sdk/package.json +4 -4
- package/node_modules/@pome-sh/shared-types/package.json +1 -1
- package/node_modules/@pome-sh/shared-types/trace-contract.json +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-repos.d.ts +3 -0
- package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js +86 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-state.d.ts +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/check-state.js +15 -0
- package/node_modules/@pome-sh/twin-github/dist/src/check-state.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/checks.d.ts +2 -0
- package/node_modules/@pome-sh/twin-github/dist/src/checks.js +5 -1
- package/node_modules/@pome-sh/twin-github/dist/src/checks.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/package.json +6 -6
- package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +7 -0
- package/node_modules/@pome-sh/twin-gmail/package.json +5 -5
- package/node_modules/@pome-sh/twin-linear/CHANGELOG.md +7 -0
- package/node_modules/@pome-sh/twin-linear/package.json +5 -5
- package/node_modules/@pome-sh/twin-slack/package.json +6 -6
- package/node_modules/@pome-sh/twin-stripe/package.json +6 -6
- package/node_modules/hono/dist/cjs/context.js +28 -13
- package/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
- package/node_modules/hono/dist/cjs/hono-base.js +3 -2
- package/node_modules/hono/dist/cjs/jsx/base.js +27 -23
- package/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
- package/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
- package/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
- package/node_modules/hono/dist/cjs/middleware/cors/index.js +2 -2
- package/node_modules/hono/dist/cjs/middleware/etag/index.js +1 -1
- package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
- package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
- package/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
- package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
- package/node_modules/hono/dist/cjs/request.js +6 -8
- package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +55 -56
- package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +64 -85
- package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +13 -5
- package/node_modules/hono/dist/cjs/router.js +1 -1
- package/node_modules/hono/dist/cjs/utils/cookie.js +3 -2
- package/node_modules/hono/dist/cjs/utils/url.js +7 -7
- package/node_modules/hono/dist/context.js +28 -13
- package/node_modules/hono/dist/helper/proxy/index.js +4 -0
- package/node_modules/hono/dist/hono-base.js +3 -2
- package/node_modules/hono/dist/jsx/base.js +27 -23
- package/node_modules/hono/dist/jsx/hooks/index.js +16 -13
- package/node_modules/hono/dist/middleware/cache/index.js +103 -8
- package/node_modules/hono/dist/middleware/compress/index.js +5 -0
- package/node_modules/hono/dist/middleware/cors/index.js +2 -2
- package/node_modules/hono/dist/middleware/etag/index.js +1 -1
- package/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
- package/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
- package/node_modules/hono/dist/middleware/language/language.js +10 -6
- package/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
- package/node_modules/hono/dist/request.js +7 -9
- package/node_modules/hono/dist/router/reg-exp-router/node.js +55 -56
- package/node_modules/hono/dist/router/reg-exp-router/router.js +64 -85
- package/node_modules/hono/dist/router/reg-exp-router/trie.js +13 -5
- package/node_modules/hono/dist/router.js +1 -1
- package/node_modules/hono/dist/types/client/types.d.ts +1 -1
- package/node_modules/hono/dist/types/hono-base.d.ts +4 -3
- package/node_modules/hono/dist/types/jsx/base.d.ts +4 -2
- package/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
- package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
- package/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
- package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
- package/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
- package/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
- package/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
- package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
- package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
- package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
- package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +1 -1
- package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
- package/node_modules/hono/dist/types/router.d.ts +1 -1
- package/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
- package/node_modules/hono/dist/types/utils/url.d.ts +1 -0
- package/node_modules/hono/dist/utils/cookie.js +4 -3
- package/node_modules/hono/dist/utils/url.js +5 -6
- package/node_modules/hono/package.json +10 -3
- package/package.json +21 -21
package/dist/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "pome-sh",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"git_sha": "
|
|
5
|
-
"build_time": "2026-08-
|
|
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 })
|
|
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":
|
|
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
|
|
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)
|
|
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":
|
|
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
|
|
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)
|
|
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
|
|
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.
|
|
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.
|
|
44
|
-
"hono": "^4.
|
|
45
|
-
"zod": "^4.
|
|
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"
|
|
@@ -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":"AAAA,sCAAsC;AACtC,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AAExE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"check-repos.js","sourceRoot":"","sources":["../../src/check-repos.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AAExE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,CAAC,MAAM,WAAW,GAA4B,WAAW,CAAC;IAC9D,EAAE,EAAE,sBAAsB;IAC1B,4EAA4E;IAC5E,mCAAmC;IACnC,WAAW,EACT,mFAAmF;QACnF,oFAAoF;QACpF,wFAAwF;QACxF,wFAAwF;QACxF,yEAAyE;IAC3E,oEAAoE;IACpE,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,EAAE;IACF,yEAAyE;IACzE,uDAAuD;IACvD,qDAAqD;IACrD,QAAQ,EAAE,wCAAwC;IAClD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACzB,6EAA6E;IAC7E,SAAS,EAAE,YAAY;IACvB,qEAAqE;IACrE,mBAAmB;IACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,4EAA4E;IAC5E,uEAAuE;IACvE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;IACnB,4EAA4E;IAC5E,6EAA6E;IAC7E,kEAAkE;IAClE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;IACzB,4EAA4E;IAC5E,+EAA+E;IAC/E,oBAAoB;IACpB,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACvG,OAAO,EAAE,UAAU,CACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EACxC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAC/D;KACF,CAAC;IACF,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAChC,oEAAoE;QACpE,sEAAsE;QACtE,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAEvF,6EAA6E;QAC7E,2EAA2E;QAC3E,4EAA4E;QAC5E,0EAA0E;QAC1E,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC3D,IAAI,SAAS,IAAI,QAAQ;YAAE,OAAO,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1D,IAAI,SAAS,IAAI,SAAS;YAAE,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5F,2EAA2E;QAC3E,yEAAyE;QACzE,6EAA6E;QAC7E,6EAA6E;QAC7E,0EAA0E;QAC1E,wDAAwD;QACxD,MAAM,WAAW,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,6BAA6B,IAAI,KAAK,MAAM,CAAC,IAAI,wCAAwC;gBACjG,kBAAkB,EAAE,WAAW;aAChC,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,qBAAqB,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvF,kBAAkB,EAAE,WAAW;SAChC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,aAAa;AACb,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,+EAA+E;AAC/E,iFAAiF;AACjF,6EAA6E;AAC7E,6EAA6E;AAC7E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,WAAW,GAA4B,WAAW,CAAC;IAC9D,EAAE,EAAE,sBAAsB;IAC1B,WAAW,EACT,yFAAyF;QACzF,sFAAsF;QACtF,0FAA0F;QAC1F,wFAAwF;QACxF,0FAA0F;QAC1F,sFAAsF;QACtF,uFAAuF;QACvF,+BAA+B;IACjC,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,QAAQ,EAAE,wCAAwC;IAClD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACzB,SAAS,EAAE,YAAY;IACvB,uEAAuE;IACvE,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,2EAA2E;IAC3E,oCAAoC;IACpC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;IACnB,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;IACzB,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,UAAU,CACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACvC;QACD,OAAO,EAAE,UAAU,CACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACtD;KACF,CAAC;IACF,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QAChC,4EAA4E;QAC5E,6DAA6D;QAC7D,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAEvF,2EAA2E;QAC3E,4EAA4E;QAC5E,2EAA2E;QAC3E,kDAAkD;QAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC3D,IAAI,SAAS,IAAI,QAAQ;YAAE,OAAO,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1D,IAAI,SAAS,IAAI,SAAS;YAAE,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC/C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,uEAAuE;QACvE,0EAA0E;QAC1E,2EAA2E;QAC3E,mEAAmE;QACnE,0EAA0E;QAC1E,2EAA2E;QAC3E,MAAM,MAAM,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,6BAA6B,IAAI,KAAK,MAAM,CAAC,IAAI,gCAAgC;gBACzF,kBAAkB,EAAE,MAAM;aAC3B,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,qBAAqB,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxF,kBAAkB,EAAE,MAAM;SAC3B,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAA0C,WAAW,CAAC;IAC3E,EAAE,EAAE,oBAAoB;IACxB,WAAW,EACT,wFAAwF;QACxF,yFAAyF;QACzF,yFAAyF;QACzF,+CAA+C;IACjD,QAAQ,EAAE,kCAAkC;IAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IACzC,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI;IAC3B,mCAAmC;IACnC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,MAAM,EAAE,CAAC;IACvE,oBAAoB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC;KAC5E,CAAC;IACF,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,SAAS,IAAI,KAAK;YAAE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACxD,OAAO;YACL,MAAM;YACN,MAAM,EAAE,MAAM;gBACZ,CAAC,CAAC,mBAAmB,IAAI,QAAQ,IAAI,EAAE;gBACvC,CAAC,CAAC,qBAAqB,IAAI,QAAQ,IAAI,KAAK,KAAK,CAAC,MAAM,oBAAoB;YAC9E,kBAAkB,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC1D,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAA4D,WAAW,CAAC;IAC/F,EAAE,EAAE,sBAAsB;IAC1B,WAAW,EACT,wFAAwF;QACxF,qFAAqF;QACrF,qFAAqF;QACrF,uDAAuD;IACzD,QAAQ,EAAE,kDAAkD;IAC5D,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC3E,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU;IAC1B,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO;IACjC,8EAA8E;IAC9E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,0EAA0E;IAC1E,4EAA4E;IAC5E,6EAA6E;IAC7E,qEAAqE;IACrE,8EAA8E;IAC9E,wBAAwB;IACxB,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI;IACzB,wEAAwE;IACxE,2EAA2E;IAC3E,iEAAiE;IACjE,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,EAAE,UAAU,CACjB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAClG;KACF,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,SAAS,IAAI,KAAK;YAAE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAC3D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QACnF,OAAO;YACL,MAAM;YACN,MAAM,EAAE,MAAM;gBACZ,CAAC,CAAC,kBAAkB,OAAO,SAAS,KAAK,QAAQ,IAAI,EAAE;gBACvD,CAAC,CAAC,qBAAqB,OAAO,iBAAiB,KAAK,QAAQ,IAAI,GAAG;oBACjE,YAAY,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACjE,2EAA2E;YAC3E,2EAA2E;YAC3E,2EAA2E;YAC3E,+BAA+B;YAC/B,kBAAkB,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;SACpE,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -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;
|
|
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.
|
|
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
|
|
37
|
-
"@pome-sh/sdk": "0.11.
|
|
38
|
-
"@pome-sh/shared-types": "0.14.
|
|
39
|
-
"hono": "^4.
|
|
40
|
-
"zod": "^4.
|
|
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
|