@open-everywhere/provider-github 0.0.0-stage → 0.1.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/LICENSE +201 -0
- package/NOTICE +21 -0
- package/README.md +50 -2
- package/agent/channels/github-catch-up.ts +134 -0
- package/agent/channels/github-engagement.ts +381 -0
- package/agent/channels/github-identity.ts +376 -0
- package/agent/channels/github-installations.ts +152 -0
- package/agent/channels/github-message-ops.ts +62 -0
- package/agent/channels/github-origin-codec.ts +42 -0
- package/agent/channels/github-post-arm.ts +422 -0
- package/agent/channels/github-reaction-feedback.ts +489 -0
- package/agent/channels/github-reaction-scope.ts +312 -0
- package/agent/channels/github-read.ts +471 -0
- package/agent/channels/github-stop.ts +175 -0
- package/agent/channels/github-supervisor.ts +645 -0
- package/agent/channels/github-webhook-verifier.ts +56 -0
- package/agent/channels/github.ts +1458 -0
- package/agent/contributions.ts +31 -0
- package/agent/docs-generated.ts +15 -0
- package/agent/memory/memory.ts +265 -0
- package/agent/ops.ts +17 -0
- package/agent/provider-events.ts +114 -0
- package/agent/register.ts +130 -0
- package/agent/surface-parity.ts +116 -0
- package/dist/agent/channels/github-catch-up.d.ts +29 -0
- package/dist/agent/channels/github-catch-up.d.ts.map +1 -0
- package/dist/agent/channels/github-catch-up.js +105 -0
- package/dist/agent/channels/github-catch-up.js.map +1 -0
- package/dist/agent/channels/github-engagement.d.ts +223 -0
- package/dist/agent/channels/github-engagement.d.ts.map +1 -0
- package/dist/agent/channels/github-engagement.js +317 -0
- package/dist/agent/channels/github-engagement.js.map +1 -0
- package/dist/agent/channels/github-identity.d.ts +164 -0
- package/dist/agent/channels/github-identity.d.ts.map +1 -0
- package/dist/agent/channels/github-identity.js +295 -0
- package/dist/agent/channels/github-identity.js.map +1 -0
- package/dist/agent/channels/github-installations.d.ts +49 -0
- package/dist/agent/channels/github-installations.d.ts.map +1 -0
- package/dist/agent/channels/github-installations.js +114 -0
- package/dist/agent/channels/github-installations.js.map +1 -0
- package/dist/agent/channels/github-message-ops.d.ts +3 -0
- package/dist/agent/channels/github-message-ops.d.ts.map +1 -0
- package/dist/agent/channels/github-message-ops.js +58 -0
- package/dist/agent/channels/github-message-ops.js.map +1 -0
- package/dist/agent/channels/github-origin-codec.d.ts +7 -0
- package/dist/agent/channels/github-origin-codec.d.ts.map +1 -0
- package/dist/agent/channels/github-origin-codec.js +36 -0
- package/dist/agent/channels/github-origin-codec.js.map +1 -0
- package/dist/agent/channels/github-post-arm.d.ts +54 -0
- package/dist/agent/channels/github-post-arm.d.ts.map +1 -0
- package/dist/agent/channels/github-post-arm.js +339 -0
- package/dist/agent/channels/github-post-arm.js.map +1 -0
- package/dist/agent/channels/github-reaction-feedback.d.ts +97 -0
- package/dist/agent/channels/github-reaction-feedback.d.ts.map +1 -0
- package/dist/agent/channels/github-reaction-feedback.js +380 -0
- package/dist/agent/channels/github-reaction-feedback.js.map +1 -0
- package/dist/agent/channels/github-reaction-scope.d.ts +102 -0
- package/dist/agent/channels/github-reaction-scope.d.ts.map +1 -0
- package/dist/agent/channels/github-reaction-scope.js +296 -0
- package/dist/agent/channels/github-reaction-scope.js.map +1 -0
- package/dist/agent/channels/github-read.d.ts +135 -0
- package/dist/agent/channels/github-read.d.ts.map +1 -0
- package/dist/agent/channels/github-read.js +371 -0
- package/dist/agent/channels/github-read.js.map +1 -0
- package/dist/agent/channels/github-stop.d.ts +52 -0
- package/dist/agent/channels/github-stop.d.ts.map +1 -0
- package/dist/agent/channels/github-stop.js +145 -0
- package/dist/agent/channels/github-stop.js.map +1 -0
- package/dist/agent/channels/github-supervisor.d.ts +308 -0
- package/dist/agent/channels/github-supervisor.d.ts.map +1 -0
- package/dist/agent/channels/github-supervisor.js +339 -0
- package/dist/agent/channels/github-supervisor.js.map +1 -0
- package/dist/agent/channels/github-webhook-verifier.d.ts +5 -0
- package/dist/agent/channels/github-webhook-verifier.d.ts.map +1 -0
- package/dist/agent/channels/github-webhook-verifier.js +55 -0
- package/dist/agent/channels/github-webhook-verifier.js.map +1 -0
- package/dist/agent/channels/github.d.ts +139 -0
- package/dist/agent/channels/github.d.ts.map +1 -0
- package/dist/agent/channels/github.js +1232 -0
- package/dist/agent/channels/github.js.map +1 -0
- package/dist/agent/contributions.d.ts +12 -0
- package/dist/agent/contributions.d.ts.map +1 -0
- package/dist/agent/contributions.js +31 -0
- package/dist/agent/contributions.js.map +1 -0
- package/dist/agent/docs-generated.d.ts +3 -0
- package/dist/agent/docs-generated.d.ts.map +1 -0
- package/dist/agent/docs-generated.js +13 -0
- package/dist/agent/docs-generated.js.map +1 -0
- package/dist/agent/memory/memory.d.ts +54 -0
- package/dist/agent/memory/memory.d.ts.map +1 -0
- package/dist/agent/memory/memory.js +224 -0
- package/dist/agent/memory/memory.js.map +1 -0
- package/dist/agent/ops.d.ts +3 -0
- package/dist/agent/ops.d.ts.map +1 -0
- package/dist/agent/ops.js +16 -0
- package/dist/agent/ops.js.map +1 -0
- package/dist/agent/provider-events.d.ts +3 -0
- package/dist/agent/provider-events.d.ts.map +1 -0
- package/dist/agent/provider-events.js +112 -0
- package/dist/agent/provider-events.js.map +1 -0
- package/dist/agent/register.d.ts +4 -0
- package/dist/agent/register.d.ts.map +1 -0
- package/dist/agent/register.js +116 -0
- package/dist/agent/register.js.map +1 -0
- package/dist/agent/surface-parity.d.ts +3 -0
- package/dist/agent/surface-parity.d.ts.map +1 -0
- package/dist/agent/surface-parity.js +110 -0
- package/dist/agent/surface-parity.js.map +1 -0
- package/package.json +156 -4
- package/tsconfig.build.json +22 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// GITHUB's event inventory (OPE-1612). See the core module's header
|
|
2
|
+
// (packages/core/agent/routines/provider-events.ts) for what the three routing states mean.
|
|
3
|
+
//
|
|
4
|
+
// Every `event` name below is a row of GitHub's own "Webhook events and payloads" index, which the
|
|
5
|
+
// `doc` field cites. The scope column is what `routines/github-normalizer.ts` proves: the `tenant`
|
|
6
|
+
// step is the repo OWNER and the `container` step is `owner/name` on EVERY row, so the rows below
|
|
7
|
+
// list only what each event adds BELOW the container — that is the part that varies, and the part a
|
|
8
|
+
// routine can address about the thing that happened.
|
|
9
|
+
//
|
|
10
|
+
// 🔴 THE `entity` STEP IS THE SUBJECT `normalizeGithubEvent` FOUND, and the chain it searches
|
|
11
|
+
// (`pull_request` → `issue` → `check_run` → `release` → `workflow_run`) is why `push`,
|
|
12
|
+
// `check_suite` and `workflow_job` are envelope-only: their subject object is under a key that chain
|
|
13
|
+
// does not name, so nothing below the repo is proven. That is a real gap, not a vendor limit, and
|
|
14
|
+
// the notes say so. `installation` is a different case and is `none`, not `envelope`: it names no
|
|
15
|
+
// repository at all, so the read-grant check refuses every delivery and nothing can ever fire.
|
|
16
|
+
//
|
|
17
|
+
// 🔴 THIS LIST IS REVIEWED, NOT EXHAUSTIVE. GitHub's index carries far more events than the rows
|
|
18
|
+
// below — `installation_repositories`, `star`, `fork`, `deployment_status` and many more. A row
|
|
19
|
+
// reaches this file when somebody read the event and decided what a routine could do with it. So an
|
|
20
|
+
// ABSENT event means "nobody has reviewed it here", never "the vendor does not send it"; adding one
|
|
21
|
+
// is a doc read plus a routing decision, not a guess.
|
|
22
|
+
export const GITHUB_PROVIDER_EVENTS = {
|
|
23
|
+
source: "github",
|
|
24
|
+
doc: "https://docs.github.com/en/webhooks/webhook-events-and-payloads",
|
|
25
|
+
events: [
|
|
26
|
+
{
|
|
27
|
+
event: "issues",
|
|
28
|
+
routing: "mapped",
|
|
29
|
+
match: [],
|
|
30
|
+
scope: ["entity"],
|
|
31
|
+
note: "an issue was opened, closed, labelled, assigned…; the entity step is the issue number, so the fire re-fetches the issue itself",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
event: "issue_comment",
|
|
35
|
+
routing: "mapped",
|
|
36
|
+
match: [],
|
|
37
|
+
scope: ["entity", "sub"],
|
|
38
|
+
note: "a comment on an issue or on a pull request's timeline; the sub step is the comment id",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
event: "pull_request",
|
|
42
|
+
routing: "mapped",
|
|
43
|
+
match: [],
|
|
44
|
+
scope: ["entity"],
|
|
45
|
+
note: "a pull request was opened, synchronised, merged…; the entity step is the pull-request number",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
event: "pull_request_review",
|
|
49
|
+
routing: "mapped",
|
|
50
|
+
match: [],
|
|
51
|
+
scope: ["entity"],
|
|
52
|
+
note: "a review was submitted, edited or dismissed; the review itself is not addressable — the payload names it `review`, not `comment`",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
event: "pull_request_review_comment",
|
|
56
|
+
routing: "mapped",
|
|
57
|
+
match: [],
|
|
58
|
+
scope: ["entity", "sub"],
|
|
59
|
+
note: "an inline comment on a line of a pull request's diff; the sub step is the comment id",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
event: "push",
|
|
63
|
+
routing: "envelope",
|
|
64
|
+
match: [],
|
|
65
|
+
scope: [],
|
|
66
|
+
note: "commits were pushed to a ref; a push has no entity to fetch, and the ref is not mapped — a routine can match the repo and the sender only",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
event: "check_run",
|
|
70
|
+
routing: "mapped",
|
|
71
|
+
match: [],
|
|
72
|
+
scope: ["entity"],
|
|
73
|
+
note: "one check's state changed; the entity step is GitHub's opaque run id, so it narrows a subscription but is not re-fetchable",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
event: "check_suite",
|
|
77
|
+
routing: "envelope",
|
|
78
|
+
match: [],
|
|
79
|
+
scope: [],
|
|
80
|
+
note: "a whole suite of checks completed; unmapped — the payload's subject sits under `check_suite`, which the normalizer's subject chain does not name",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
event: "workflow_run",
|
|
84
|
+
routing: "mapped",
|
|
85
|
+
match: ["branch", "status", "conclusion", "workflow"],
|
|
86
|
+
scope: ["entity"],
|
|
87
|
+
note: "an Actions run started or finished; the four keys are what makes `a red build on our main` expressible — `.scope.container == \"acme/web\" and .fields.conclusion == \"failure\" and .fields.branch == \"main\"`. The container clause is REQUIRED, not decoration: a github subscription that narrows by nothing is refused at create time",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
event: "workflow_job",
|
|
91
|
+
routing: "envelope",
|
|
92
|
+
match: [],
|
|
93
|
+
scope: [],
|
|
94
|
+
note: "one job inside an Actions run changed state; unmapped — `workflow_run` is the run-level event and carries the same conclusion for the whole run",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
event: "release",
|
|
98
|
+
routing: "mapped",
|
|
99
|
+
match: [],
|
|
100
|
+
scope: ["entity"],
|
|
101
|
+
note: "a release was published or edited; the entity step is GitHub's opaque release id, so it narrows a subscription but is not re-fetchable",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
event: "installation",
|
|
105
|
+
routing: "none",
|
|
106
|
+
match: [],
|
|
107
|
+
scope: [],
|
|
108
|
+
note: "the App was installed, suspended or removed; the normalizer accepts it, but the payload names `repositories` and never `repository`, so it proves NO container step and the read-grant check refuses every delivery fail-closed — nothing can ever fire. The self-registering install leg reads it instead",
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=provider-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-events.js","sourceRoot":"","sources":["../../agent/provider-events.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,4FAA4F;AAC5F,EAAE;AACF,mGAAmG;AACnG,mGAAmG;AACnG,kGAAkG;AAClG,oGAAoG;AACpG,qDAAqD;AACrD,EAAE;AACF,8FAA8F;AAC9F,uFAAuF;AACvF,qGAAqG;AACrG,kGAAkG;AAClG,kGAAkG;AAClG,+FAA+F;AAC/F,EAAE;AACF,iGAAiG;AACjG,gGAAgG;AAChG,oGAAoG;AACpG,oGAAoG;AACpG,sDAAsD;AAItD,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC9D,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,iEAAiE;IACtE,MAAM,EAAE;QACN;YACE,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,gIAAgI;SACvI;QACD;YACE,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YACxB,IAAI,EAAE,uFAAuF;SAC9F;QACD;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,8FAA8F;SACrG;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,kIAAkI;SACzI;QACD;YACE,KAAK,EAAE,6BAA6B;YACpC,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YACxB,IAAI,EAAE,sFAAsF;SAC7F;QACD;YACE,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,2IAA2I;SAClJ;QACD;YACE,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,4HAA4H;SACnI;QACD;YACE,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,kJAAkJ;SACzJ;QACD;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC;YACrD,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,6UAA6U;SACpV;QACD;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,iJAAiJ;SACxJ;QACD;YACE,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,wIAAwI;SAC/I;QACD;YACE,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,4SAA4S;SACnT;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../agent/register.ts"],"names":[],"mappings":"AAiEA;wEACwE;AACxE,wBAAgB,sBAAsB,IAAI,IAAI,CA8D7C"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// registerGithubProvider — the ONE boot entry of @open-everywhere/provider-github. The app's
|
|
2
|
+
// adapter-wiring module (agent/lib/register-adapters.ts) imports this STATICALLY and calls it once
|
|
3
|
+
// at boot; every seam the github bundle implements registers here and nowhere else. Static imports
|
|
4
|
+
// only: eve bundles the agent definition and its whole import graph into one rolldown chunk — a
|
|
5
|
+
// literal dynamic import() code-splits and trips eve's "expected one authored module" invariant.
|
|
6
|
+
//
|
|
7
|
+
// SCOPE — CHAT SURFACE ONLY. The github bundle takes the conversational surface (channels/github.ts
|
|
8
|
+
// + the ambient supervisor + identity + post arm). The SCM subsystem STAYS IN CORE by doctrine (the
|
|
9
|
+
// single SCM implementation until a second SCM needs the abstraction — docs/extending/adapter-model.md):
|
|
10
|
+
// the githubEntityAdapter (scm/issue-actions.ts) and every PR/SCM tool (open_pull_request,
|
|
11
|
+
// subscribe_pr, checkout_repo, list_repos, add_label, assign, …) plus the config-repo PR mechanism
|
|
12
|
+
// (credentials/config-pr-github.ts) is NOT part
|
|
13
|
+
// of this bundle — they register from core exactly as before.
|
|
14
|
+
//
|
|
15
|
+
// What github registers (and what it deliberately does NOT):
|
|
16
|
+
// • identity mapper — bindGitHub (chat-surface plane; channels/github-identity.ts)
|
|
17
|
+
// • capability manifest — { midTurnPost: true, reactions: true, closingProseDropped: true }:
|
|
18
|
+
// the arm mints its own installation token and posts/edits/reacts on the
|
|
19
|
+
// issue/PR timeline itself, so every mid-turn verb runs through `reply` /
|
|
20
|
+
// `edit_reply` / `react` rather than a host-side supervisor post (OPE-811,
|
|
21
|
+
// OPE-862)
|
|
22
|
+
// • post arm — githubPostArm (mid-turn + unified-reply installation-token comment,
|
|
23
|
+
// editMessage, react, + redrive)
|
|
24
|
+
// • wake-origin codec — the stored-data github arm (channels/github-origin-codec.ts)
|
|
25
|
+
// • read adapter — githubReadAdapter (channels/github-read.ts, OPE-958): the issue-or-PR
|
|
26
|
+
// conversation for `read_channel` and a PR review thread for
|
|
27
|
+
// `read_thread`, on the brokered read-scoped token. The READ grain is
|
|
28
|
+
// the conversation, not the repo — a repo timeline is not a room
|
|
29
|
+
// anybody wrote in
|
|
30
|
+
// • memory backing — the github MemoryProvider + its connector-memory capability
|
|
31
|
+
// (agent/memory/memory.ts). MOVED here from core at OPE-390: a
|
|
32
|
+
// connector-owned backing belongs to the package that owns the
|
|
33
|
+
// connector; core keeps only the first-party postgres/sqlite ones.
|
|
34
|
+
// • surface message ops — githubMessageOps (postText/editMessage; OPE-899): the stop
|
|
35
|
+
// acknowledgement's transport (turn-anchor.ts's `postSurfaceText`).
|
|
36
|
+
// No postFiles (no file-attach API) and no setReaction (no raised hand
|
|
37
|
+
// in GitHub's fixed reaction set) — channels/github-message-ops.ts.
|
|
38
|
+
import { registerIdentityMapper, registerCapabilityManifest, registerSurfaceParity, registerProviderEvents, registerReactionSurface, registerPostArm, registerWakeOriginCodec, registerProviderDocs, registerReadAdapter, registerSeatCatchUp, registerWebhookVerifier, registerSurfaceMessageOps, } from "@open-everywhere/core/agent/adapter-api.js";
|
|
39
|
+
import { PROVIDER_DOCS } from "./docs-generated.js";
|
|
40
|
+
import { GITHUB_SURFACE_PARITY } from "./surface-parity.js";
|
|
41
|
+
import { GITHUB_PROVIDER_EVENTS } from "./provider-events.js";
|
|
42
|
+
import { registerGithubOps } from "./ops.js";
|
|
43
|
+
import { registerGitHubMemory, declareGitHubMemoryCapability } from "./memory/memory.js";
|
|
44
|
+
import { bindGitHub } from "./channels/github-identity.js";
|
|
45
|
+
import { githubPostArm } from "./channels/github-post-arm.js";
|
|
46
|
+
import { githubWakeOriginCodec } from "./channels/github-origin-codec.js";
|
|
47
|
+
import { githubWebhookVerifier } from "./channels/github-webhook-verifier.js";
|
|
48
|
+
import { githubReadAdapter } from "./channels/github-read.js";
|
|
49
|
+
import { githubSeatCatchUpFetch, GITHUB_TIMESTAMP_PRECISION_MS } from "./channels/github-catch-up.js";
|
|
50
|
+
import { githubMessageOps } from "./channels/github-message-ops.js";
|
|
51
|
+
/** Perform ALL of the github bundle's chat-surface registrations. Idempotent (each register call
|
|
52
|
+
* replaces); cheap and side-effect-free beyond the registry writes. */
|
|
53
|
+
export function registerGithubProvider() {
|
|
54
|
+
registerIdentityMapper("github", bindGitHub);
|
|
55
|
+
// Reply surface (OPE-811): mid-turn post is the arm's own installation-token issue/PR-timeline
|
|
56
|
+
// comment (githubPostArm.dispatchReply) — no eve proactive helper needed ⇒ midTurnPost true.
|
|
57
|
+
// reactions (OPE-862): the arm's `react` member posts to GitHub's issue-reactions endpoint
|
|
58
|
+
// (mapping the model's bare emoji name onto GitHub's fixed content enum) ⇒ true.
|
|
59
|
+
// closingProseDropped (OPE-811): a container-supervisor turn runs the message-tool-only gate
|
|
60
|
+
// live, so its turn-final text is dropped and `reply` is the only route out.
|
|
61
|
+
registerCapabilityManifest("github", { midTurnPost: true, reactions: true, closingProseDropped: true });
|
|
62
|
+
// The OPE-1499 parity ledger: every capability the chat-surface contract names, answered
|
|
63
|
+
// `supported` or `{ unsupported: "<reason>" }`. Gates nothing at runtime — `lint:surface-parity`
|
|
64
|
+
// reds on an unanswered row, and the contract's §7.1/§7.1.1/§7.2 tables are generated from it.
|
|
65
|
+
registerSurfaceParity("github", GITHUB_SURFACE_PARITY);
|
|
66
|
+
// The OPE-1612 event inventory: every vendor event that could wake a routine, and how far the
|
|
67
|
+
// normalizer plane carries each one. Gates nothing at runtime — `lint:provider-events` reds a
|
|
68
|
+
// bundle that declares none or that promises a match key the normalizer does not declare, and
|
|
69
|
+
// the manual's inventory table is generated from it.
|
|
70
|
+
registerProviderEvents("github", GITHUB_PROVIDER_EVENTS);
|
|
71
|
+
registerPostArm(githubPostArm);
|
|
72
|
+
registerWakeOriginCodec("github", githubWakeOriginCodec);
|
|
73
|
+
// Read plane (OPE-958): the sixth surface's arm of the uniform chat read. It serves the SEAT's
|
|
74
|
+
// `read_channel` / `read_thread` and — under the domain's repo grant — the worker's
|
|
75
|
+
// `read_work_channel` / `read_work_thread`, because both run the same neutral engine over this
|
|
76
|
+
// one adapter.
|
|
77
|
+
registerReadAdapter(githubReadAdapter);
|
|
78
|
+
// THE SEAT CATCH-UP FETCH (OPE-1726): the timeline comments this issue/PR collected since the
|
|
79
|
+
// seat's last wake. Core's shared path applies the bounds, the admission policy and the cap.
|
|
80
|
+
// The surface DECLARES the unit its own message stamps carry, and core widens both catch-up
|
|
81
|
+
// bounds by it (OPE-1847). A wrong or missing unit bounds the seat out of its own window.
|
|
82
|
+
registerSeatCatchUp("github", githubSeatCatchUpFetch, { timestampPrecisionMs: GITHUB_TIMESTAMP_PRECISION_MS });
|
|
83
|
+
// Surface message ops (OPE-899): postText/editMessage over the SAME issue/PR-timeline comment
|
|
84
|
+
// transport the post arm uses, so the stop acknowledgement (turn-anchor.ts's `postSurfaceText`)
|
|
85
|
+
// now has a place to land on GitHub. No `postFiles` (no attach-a-file-to-a-comment API) and no
|
|
86
|
+
// `setReaction` (GitHub's fixed 8-value reaction set has no raised hand) — see
|
|
87
|
+
// channels/github-message-ops.ts's header.
|
|
88
|
+
registerSurfaceMessageOps(githubMessageOps);
|
|
89
|
+
// REACTION-FEEDBACK INGEST (OPE-1502) — a POLL, not a delivery: GitHub pushes no reaction webhook,
|
|
90
|
+
// so the front reads the reactions on the agent's own comments when a delivery names their
|
|
91
|
+
// conversation (channels/github-reaction-feedback.ts).
|
|
92
|
+
registerReactionSurface("github");
|
|
93
|
+
// Webhook-verifier plane (OPE-164): GitHub's `x-hub-signature-256` scheme, so a GENERIC hook can
|
|
94
|
+
// declare `source: "github"` and be verified the way GitHub signs. Changes no existing route —
|
|
95
|
+
// the native github webhook path keeps its own inline gate.
|
|
96
|
+
registerWebhookVerifier(githubWebhookVerifier);
|
|
97
|
+
// Shipped-manual plane (OPE-138): this bundle's own setup runbook (docs/deploy/surfaces/github.md,
|
|
98
|
+
// compiled into ./docs-generated.ts because docs/ is not on disk at runtime). De-select the bundle
|
|
99
|
+
// and the module leaves the import graph; registerProviderDocs re-checks the selection gate anyway.
|
|
100
|
+
registerProviderDocs("github", PROVIDER_DOCS);
|
|
101
|
+
// Ops plane (OPE-495): the telemetry credential-presence probe. Split into ./ops.js so the
|
|
102
|
+
// STANDALONE ops MCP entry (repo-root scripts/ops-mcp.ts, which serves preflight/quickstart with
|
|
103
|
+
// no agent boot) registers it without pulling the whole channel graph — the same split slack and
|
|
104
|
+
// teams use.
|
|
105
|
+
registerGithubOps();
|
|
106
|
+
// The MEMORY backing (OPE-390). Two calls on purpose:
|
|
107
|
+
// • registerGitHubMemory() wires the live provider off the GitHub App plane and is a no-op
|
|
108
|
+
// (false) when no App is configured — a deployment that never uses git-backed memory pays
|
|
109
|
+
// nothing and never resolves the "github" provider id.
|
|
110
|
+
// • declareGitHubMemoryCapability() runs REGARDLESS, because the prefetch invariant is a
|
|
111
|
+
// CONFIG check: a silo reaching past its domain's repo grants must go red at config load on
|
|
112
|
+
// a deployment whose App plane happens to be unconfigured too, not go quiet.
|
|
113
|
+
if (!registerGitHubMemory())
|
|
114
|
+
declareGitHubMemoryCapability();
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../agent/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface-parity.d.ts","sourceRoot":"","sources":["../../agent/surface-parity.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAE3F,eAAO,MAAM,qBAAqB,EAAE,wBA0GnC,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// GITHUB's surface-parity declaration (OPE-1499). See the core module's header
|
|
2
|
+
// (packages/core/agent/identity/surface-parity.ts) for what the three cell shapes mean.
|
|
3
|
+
//
|
|
4
|
+
// GitHub is a TICKETING surface. A repo holds issues and pull requests, not chat rooms, so the
|
|
5
|
+
// three cross-container verbs and the DM family are absent for a structural reason rather than an
|
|
6
|
+
// unbuilt one — and that distinction is what the reasons below carry.
|
|
7
|
+
export const GITHUB_SURFACE_PARITY = {
|
|
8
|
+
// --- registration seams (§7.1) ---------------------------------------------------------------
|
|
9
|
+
"identity-mapper": "supported",
|
|
10
|
+
"capability-manifest": "supported",
|
|
11
|
+
"post-arm": "supported",
|
|
12
|
+
"wake-origin-codec": "supported",
|
|
13
|
+
"unified-action-plane": {
|
|
14
|
+
unsupported: "an issue comment is markdown and carries no component plane at all — GitHub offers no tappable button a bot may render into a timeline comment, so there is nothing for a tap route to receive. The bridged approval posts as prose, which the question bridge already renders complete",
|
|
15
|
+
},
|
|
16
|
+
"origin-placement-carry": {
|
|
17
|
+
unsupported: "the placement is INSIDE the conversation identity: a reply is a comment appended to the issue timeline and the issue IS `threadRef`'s thread key, so there is no 'where inside it' left to name",
|
|
18
|
+
},
|
|
19
|
+
"read-adapter": "supported",
|
|
20
|
+
// 🔴 A POLL, not a delivery, and the note says so because the latency is real. GitHub pushes no
|
|
21
|
+
// reaction webhook at all, so the arm reads the reactions on the agent's own comments when a
|
|
22
|
+
// later delivery names their conversation. Only an ADD is observable — the route returns the
|
|
23
|
+
// reactions that exist, never one that was taken away.
|
|
24
|
+
"reaction-feedback-ingest": { supported: "polled on the next delivery for that conversation — GitHub pushes no reaction webhook, so a removal is never observed" },
|
|
25
|
+
"ancillary-ops": "supported",
|
|
26
|
+
"ambient-engagement-seam": "supported",
|
|
27
|
+
// `githubWakeAddressing` (channels/github-engagement.ts) carries the admission's own `deliver`
|
|
28
|
+
// verdict to the `github.dispatched` row, so an engaged follow-up reads `thread-follow` and
|
|
29
|
+
// unowned issue chatter still reads `channel-watch`. The verdict is floored on
|
|
30
|
+
// `githubEngagedFollowUpReach`, so an engaged issue on a public or unknown-privacy repo, and an
|
|
31
|
+
// inline review comment, still write `channel-watch` — the engaged door is shut there. The wake
|
|
32
|
+
// envelope is untouched: the turn is judged, and the silence bar set, exactly as before
|
|
33
|
+
// (OPE-1752).
|
|
34
|
+
"engaged-row-promotion": "supported",
|
|
35
|
+
// The container and the thread coincide — an issue or pull request IS its own thread — so every
|
|
36
|
+
// wake this surface diverts is thread-scoped and consults ownership.
|
|
37
|
+
"owned-thread-ingress": "supported",
|
|
38
|
+
// --- wake legs and conversation shapes -------------------------------------------------------
|
|
39
|
+
"addressed-leg": "supported",
|
|
40
|
+
// The ambient supervisor, a different mechanism from the §2.5 registry: the domain opt-in and the
|
|
41
|
+
// operator vouch decide whether it runs, and the registry has never gated that. The registry does
|
|
42
|
+
// SUPPRESS it, though — `ambientDelivery` drops a comment in a container `stand_down` marked, and
|
|
43
|
+
// drops one the native leg now owns (OPE-1501).
|
|
44
|
+
"ambient-leg": { supported: "the ambient supervisor, not the §2.5 engagement registry" },
|
|
45
|
+
// `github-catch-up.ts` reads `/issues/:n/comments?since=` for the conversation the seat is woken
|
|
46
|
+
// on, over the same brokered conversation-read token `read_channel` uses. The vendor's own `since`
|
|
47
|
+
// filter does the narrowing, so a seat that woke a minute ago pays for a near-empty page.
|
|
48
|
+
"seat-catch-up": "supported",
|
|
49
|
+
// The supervisor wake fills the slot with ONE host-composed issue/PR title line, and pours it
|
|
50
|
+
// through the core seam (github-supervisor.ts). One line is still a pour: a `members-only` domain
|
|
51
|
+
// must get the same answer here as it gets on the catch-up read beside it.
|
|
52
|
+
// 🔴 BARE, NOT `{ supported: "…" }` — a noted cell is exempt from the overclaim arm, and this
|
|
53
|
+
// surface is half of the OPE-1800 class the arm exists to catch.
|
|
54
|
+
"seat-context-admission": "supported",
|
|
55
|
+
// A GitHub comment carries no component plane at all — there is no button to tap and no route for
|
|
56
|
+
// a tap to arrive on. See the roster row for what that costs and where it does NOT cost anything.
|
|
57
|
+
"approval-card": { unsupported: "an issue/PR comment carries no component plane, so there is no button to render and no route for a tap. A governed act that takes the venue walk is redirected to a card-capable room in the SAME domain, or refused when the domain holds none. The paths OUTSIDE that walk do not: the spend checkpoint (spend/checkpoint.ts `requireSessionContinuation`) fails OPEN here and records the crossing in an audit row instead" },
|
|
58
|
+
// THE TRACE ARRIVES EVEN THOUGH THE BUTTON CANNOT (OPE-1854). A judge-lifted act posts its
|
|
59
|
+
// notice here as a plain issue or pull-request comment through the shared road (`postJudgeLiftNotice`), on this
|
|
60
|
+
// surface's own `SurfaceMessageOps` transport. It carries the overrule as an INSTRUCTION in
|
|
61
|
+
// words, with the action id a reviewer finds the act by, because no tap can land here.
|
|
62
|
+
// 🔴 BARE, NOT `{ supported: "…" }`. A noted cell is exempt from the overclaim arm, and the
|
|
63
|
+
// arm is the point: drop this bundle's text transport and the notice silently stops arriving.
|
|
64
|
+
"judge-lift-notice": "supported",
|
|
65
|
+
"name-drop-mention": { unsupported: "not built yet — the ambient supervisor already reads every comment, so a name-drop match adds no wake" },
|
|
66
|
+
// 🔴 EVERY WAKE LEG ADMITS `created` ONLY, and that is the narrower true claim. The delivery DOES
|
|
67
|
+
// reach OE code — `wrapRoute` runs the fan-out, the installation leg and the reaction poll on an
|
|
68
|
+
// edited comment like any other — but no leg that can start a turn admits one: eve's route
|
|
69
|
+
// dispatches `issue_comment`/`pull_request_review_comment` with `action: "created"`,
|
|
70
|
+
// `extractGitHubAmbientEvent` reads the same created-only shape, and `parseGitHubStopComment`
|
|
71
|
+
// agrees.
|
|
72
|
+
"message-edit-wake": { unsupported: "every wake leg admits `action: \"created\"` only — eve's route, the ambient extractor and the stop leg each refuse an edited comment" },
|
|
73
|
+
// A review thread on a pull request (§4.6.1).
|
|
74
|
+
threads: "supported",
|
|
75
|
+
// A STANDING room (§4.7.1's sense), not §4.5's read_channel container — GitHub has the latter and
|
|
76
|
+
// `read_channel` is supported below. Every GitHub container is one issue or pull request, so it
|
|
77
|
+
// exists because somebody filed work and is about that work.
|
|
78
|
+
rooms: { unsupported: "no standing container — every GitHub container is one issue or pull request" },
|
|
79
|
+
dm: { unsupported: "no DM plane — GitHub carries no person-to-person message channel" },
|
|
80
|
+
mpim: { unsupported: "no DM plane — GitHub carries no person-to-person message channel" },
|
|
81
|
+
// --- core verbs (§7.2) -----------------------------------------------------------------------
|
|
82
|
+
reply: "supported",
|
|
83
|
+
edit_reply: "supported",
|
|
84
|
+
react: "supported",
|
|
85
|
+
no_reply: "supported",
|
|
86
|
+
read_channel: "supported",
|
|
87
|
+
read_thread: "supported",
|
|
88
|
+
// The work-search adapter is CORE-resident and ungated (packages/core/agent/scm/github-search.ts,
|
|
89
|
+
// `registerCoreWorkSearchAdapter`), not registered from this bundle — but the corpus is GitHub's.
|
|
90
|
+
search: { supported: "the core-resident adapter (`scm/github-search.ts`), registered ungated" },
|
|
91
|
+
// NOT a structural absence, and the reason matters: the transport exists (this bundle registers
|
|
92
|
+
// `SurfaceMessageOps`, and `approvals/chat-post.ts` posts through it). What refuses is the closed
|
|
93
|
+
// `RESOURCE_TYPES` table in `access/resource-grant.ts`, which carries no row for this surface, so
|
|
94
|
+
// no `channel` grant can be minted and `chatWriteMount` never arms the tool.
|
|
95
|
+
post_message: { unsupported: "not built yet — no `channel` row in `access/resource-grant.ts` — OPE-1507" },
|
|
96
|
+
dm_person: { unsupported: "no DM plane — GitHub carries no person-to-person message channel (§4.7.2)" },
|
|
97
|
+
set_dm_delivery: { unsupported: "no DM plane — the verb mounts only inside a 1:1 DM (§4.7.2)" },
|
|
98
|
+
// GitHub sends no webhook for a reaction at all, so the trigger is a comment whose ENTIRE body is
|
|
99
|
+
// the word `stop` — one thing only, never a magic string competing with real messages (§4.8).
|
|
100
|
+
stop: { supported: "a comment whose entire body is `stop` — GitHub sends no reaction webhook" },
|
|
101
|
+
// `react` IS wired, so this is not "no reaction primitive". GitHub's reaction set is the fixed
|
|
102
|
+
// eight (+1, -1, laugh, confused, heart, hooray, rocket, eyes) and none of them is a raised hand,
|
|
103
|
+
// so there is no glyph to place — github-message-ops.ts offers no `setReaction` for that reason
|
|
104
|
+
// rather than faking one against the wrong emoji.
|
|
105
|
+
ack_stop_glyph: { unsupported: "vendor limit — GitHub's fixed eight reactions carry no raised hand, so there is no ✋ to place" },
|
|
106
|
+
ack_cancel_note: "supported",
|
|
107
|
+
stand_down: { supported: "marks the issue/pull-request row; refuses when no row exists" },
|
|
108
|
+
post_file: { unsupported: "vendor limit — a GitHub comment carries no file-attachment API" },
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=surface-parity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface-parity.js","sourceRoot":"","sources":["../../agent/surface-parity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,158 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-everywhere/provider-github",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Open Everywhere GitHub provider — GitHub issues and pull requests as a conversational wake surface.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"agent",
|
|
7
|
+
"github",
|
|
8
|
+
"github-app",
|
|
9
|
+
"chatops",
|
|
10
|
+
"eve"
|
|
11
|
+
],
|
|
12
|
+
"license": "Apache-2.0",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"homepage": "https://github.com/open-everywhere/open-everywhere/tree/main/packages/providers/github",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/open-everywhere/open-everywhere.git",
|
|
18
|
+
"directory": "packages/providers/github"
|
|
19
|
+
},
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/open-everywhere/open-everywhere/issues"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=24"
|
|
25
|
+
},
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"agent",
|
|
31
|
+
"dist",
|
|
32
|
+
"tsconfig.json",
|
|
33
|
+
"tsconfig.build.json",
|
|
34
|
+
"LICENSE",
|
|
35
|
+
"NOTICE"
|
|
36
|
+
],
|
|
37
|
+
"exports": {
|
|
38
|
+
"./package.json": "./package.json",
|
|
39
|
+
"./agent/channels/github-catch-up.js": {
|
|
40
|
+
"types": "./dist/agent/channels/github-catch-up.d.ts",
|
|
41
|
+
"default": "./dist/agent/channels/github-catch-up.js"
|
|
42
|
+
},
|
|
43
|
+
"./agent/channels/github-engagement.js": {
|
|
44
|
+
"types": "./dist/agent/channels/github-engagement.d.ts",
|
|
45
|
+
"default": "./dist/agent/channels/github-engagement.js"
|
|
46
|
+
},
|
|
47
|
+
"./agent/channels/github-identity.js": {
|
|
48
|
+
"types": "./dist/agent/channels/github-identity.d.ts",
|
|
49
|
+
"default": "./dist/agent/channels/github-identity.js"
|
|
50
|
+
},
|
|
51
|
+
"./agent/channels/github-installations.js": {
|
|
52
|
+
"types": "./dist/agent/channels/github-installations.d.ts",
|
|
53
|
+
"default": "./dist/agent/channels/github-installations.js"
|
|
54
|
+
},
|
|
55
|
+
"./agent/channels/github-message-ops.js": {
|
|
56
|
+
"types": "./dist/agent/channels/github-message-ops.d.ts",
|
|
57
|
+
"default": "./dist/agent/channels/github-message-ops.js"
|
|
58
|
+
},
|
|
59
|
+
"./agent/channels/github-origin-codec.js": {
|
|
60
|
+
"types": "./dist/agent/channels/github-origin-codec.d.ts",
|
|
61
|
+
"default": "./dist/agent/channels/github-origin-codec.js"
|
|
62
|
+
},
|
|
63
|
+
"./agent/channels/github-post-arm.js": {
|
|
64
|
+
"types": "./dist/agent/channels/github-post-arm.d.ts",
|
|
65
|
+
"default": "./dist/agent/channels/github-post-arm.js"
|
|
66
|
+
},
|
|
67
|
+
"./agent/channels/github-reaction-feedback.js": {
|
|
68
|
+
"types": "./dist/agent/channels/github-reaction-feedback.d.ts",
|
|
69
|
+
"default": "./dist/agent/channels/github-reaction-feedback.js"
|
|
70
|
+
},
|
|
71
|
+
"./agent/channels/github-reaction-scope.js": {
|
|
72
|
+
"types": "./dist/agent/channels/github-reaction-scope.d.ts",
|
|
73
|
+
"default": "./dist/agent/channels/github-reaction-scope.js"
|
|
74
|
+
},
|
|
75
|
+
"./agent/channels/github-read.js": {
|
|
76
|
+
"types": "./dist/agent/channels/github-read.d.ts",
|
|
77
|
+
"default": "./dist/agent/channels/github-read.js"
|
|
78
|
+
},
|
|
79
|
+
"./agent/channels/github-stop.js": {
|
|
80
|
+
"types": "./dist/agent/channels/github-stop.d.ts",
|
|
81
|
+
"default": "./dist/agent/channels/github-stop.js"
|
|
82
|
+
},
|
|
83
|
+
"./agent/channels/github-supervisor.js": {
|
|
84
|
+
"types": "./dist/agent/channels/github-supervisor.d.ts",
|
|
85
|
+
"default": "./dist/agent/channels/github-supervisor.js"
|
|
86
|
+
},
|
|
87
|
+
"./agent/channels/github-webhook-verifier.js": {
|
|
88
|
+
"types": "./dist/agent/channels/github-webhook-verifier.d.ts",
|
|
89
|
+
"default": "./dist/agent/channels/github-webhook-verifier.js"
|
|
90
|
+
},
|
|
91
|
+
"./agent/channels/github.js": {
|
|
92
|
+
"types": "./dist/agent/channels/github.d.ts",
|
|
93
|
+
"default": "./dist/agent/channels/github.js"
|
|
94
|
+
},
|
|
95
|
+
"./agent/contributions.js": {
|
|
96
|
+
"types": "./dist/agent/contributions.d.ts",
|
|
97
|
+
"default": "./dist/agent/contributions.js"
|
|
98
|
+
},
|
|
99
|
+
"./agent/docs-generated.js": {
|
|
100
|
+
"types": "./dist/agent/docs-generated.d.ts",
|
|
101
|
+
"default": "./dist/agent/docs-generated.js"
|
|
102
|
+
},
|
|
103
|
+
"./agent/memory/memory.js": {
|
|
104
|
+
"types": "./dist/agent/memory/memory.d.ts",
|
|
105
|
+
"default": "./dist/agent/memory/memory.js"
|
|
106
|
+
},
|
|
107
|
+
"./agent/ops.js": {
|
|
108
|
+
"types": "./dist/agent/ops.d.ts",
|
|
109
|
+
"default": "./dist/agent/ops.js"
|
|
110
|
+
},
|
|
111
|
+
"./agent/provider-events.js": {
|
|
112
|
+
"types": "./dist/agent/provider-events.d.ts",
|
|
113
|
+
"default": "./dist/agent/provider-events.js"
|
|
114
|
+
},
|
|
115
|
+
"./agent/register.js": {
|
|
116
|
+
"types": "./dist/agent/register.d.ts",
|
|
117
|
+
"default": "./dist/agent/register.js"
|
|
118
|
+
},
|
|
119
|
+
"./agent/surface-parity.js": {
|
|
120
|
+
"types": "./dist/agent/surface-parity.d.ts",
|
|
121
|
+
"default": "./dist/agent/surface-parity.js"
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"scripts": {
|
|
125
|
+
"build": "tsc -p tsconfig.build.json",
|
|
126
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
127
|
+
"test": "npm run test:chain",
|
|
128
|
+
"test:chain": "npm run test:github-supervisor && npm run test:github-identity && npm run test:github-post-arm && npm run test:github-installations && npm run test:github-webhook-verifier && npm run test:github-memory && npm run test:github-stop && npm run test:github-engagement && npm run test:github-reaction-feedback && npm run test:github-read && npm run test:github-mint-scope && npm run test:github-message-ops && npm run test:github-wake-failure-audit && npm run test:github-rate-limit && npm run test:github-write-seam && npm run test:github-reaction-scope",
|
|
129
|
+
"test:github-wake-failure-audit": "NODE_NO_WARNINGS=1 tsx scripts/github-wake-failure-audit-test.ts",
|
|
130
|
+
"test:github-rate-limit": "NODE_NO_WARNINGS=1 tsx scripts/github-rate-limit-test.ts",
|
|
131
|
+
"test:github-write-seam": "NODE_NO_WARNINGS=1 tsx scripts/github-write-seam-test.ts",
|
|
132
|
+
"test:github-read": "NODE_NO_WARNINGS=1 tsx scripts/github-read-test.ts",
|
|
133
|
+
"test:github-message-ops": "NODE_NO_WARNINGS=1 tsx scripts/github-message-ops-test.ts",
|
|
134
|
+
"test:github-supervisor": "NODE_NO_WARNINGS=1 tsx scripts/github-supervisor-test.ts",
|
|
135
|
+
"test:github-identity": "NODE_NO_WARNINGS=1 tsx scripts/github-identity-test.ts",
|
|
136
|
+
"test:github-post-arm": "NODE_NO_WARNINGS=1 tsx scripts/github-post-arm-test.ts",
|
|
137
|
+
"test:github-installations": "NODE_NO_WARNINGS=1 tsx scripts/github-installations-test.ts",
|
|
138
|
+
"test:github-webhook-verifier": "NODE_NO_WARNINGS=1 tsx scripts/github-webhook-verifier-test.ts",
|
|
139
|
+
"test:github-memory": "NODE_NO_WARNINGS=1 tsx scripts/github-memory-test.ts",
|
|
140
|
+
"test:github-stop": "NODE_NO_WARNINGS=1 tsx scripts/github-stop-test.ts",
|
|
141
|
+
"test:github-reaction-feedback": "NODE_NO_WARNINGS=1 tsx scripts/github-reaction-feedback-test.ts",
|
|
142
|
+
"test:github-engagement": "NODE_NO_WARNINGS=1 tsx scripts/github-engagement-test.ts",
|
|
143
|
+
"test:github-mint-scope": "NODE_NO_WARNINGS=1 tsx scripts/github-mint-scope-test.ts",
|
|
144
|
+
"test:github-reaction-scope": "NODE_NO_WARNINGS=1 tsx scripts/github-reaction-scope-test.ts"
|
|
145
|
+
},
|
|
146
|
+
"dependencies": {
|
|
147
|
+
"@open-everywhere/core": "0.1.0",
|
|
148
|
+
"zod": "4.5.4"
|
|
149
|
+
},
|
|
150
|
+
"peerDependencies": {
|
|
151
|
+
"eve": "0.54.3"
|
|
152
|
+
},
|
|
153
|
+
"devDependencies": {
|
|
154
|
+
"@types/node": "latest",
|
|
155
|
+
"tsx": "latest",
|
|
156
|
+
"typescript": "latest"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
// PUBLISH BUILD (OPE-406). See packages/core/tsconfig.build.json for the full rationale: the
|
|
3
|
+
// sibling tsconfig.json stays noEmit (it is the typecheck gate and covers scripts/** too); this
|
|
4
|
+
// config emits ONLY the published surface (agent/**) into dist/, because a registry install
|
|
5
|
+
// cannot execute raw TypeScript and "eve build" evaluates the authored agent modules.
|
|
6
|
+
"extends": "./tsconfig.json",
|
|
7
|
+
"compilerOptions": {
|
|
8
|
+
"noEmit": false,
|
|
9
|
+
// Incremental: these run from every pre-hook (pretypecheck/pretest/prebuild), so a no-op
|
|
10
|
+
// rebuild has to be near-free or the gate chain pays a full tsc on every invocation.
|
|
11
|
+
"incremental": true,
|
|
12
|
+
// OUTSIDE outDir on purpose: a tsbuildinfo left in dist/ gets swept up by the files
|
|
13
|
+
// allowlist and PUBLISHED (caught by the tarball listing, 2026-08-12).
|
|
14
|
+
"tsBuildInfoFile": "./.tsbuildinfo",
|
|
15
|
+
"declaration": true,
|
|
16
|
+
"declarationMap": true,
|
|
17
|
+
"sourceMap": true,
|
|
18
|
+
"outDir": "dist",
|
|
19
|
+
"rootDir": "."
|
|
20
|
+
},
|
|
21
|
+
"include": ["agent/**/*.ts"]
|
|
22
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2023",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
6
|
+
"lib": ["ES2023"],
|
|
7
|
+
"strict": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"noEmit": true,
|
|
11
|
+
"resolveJsonModule": true,
|
|
12
|
+
"types": ["node"]
|
|
13
|
+
},
|
|
14
|
+
"include": ["agent/**/*.ts", "scripts/**/*.ts"]
|
|
15
|
+
}
|