@open-everywhere/provider-slack 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.
Files changed (151) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +21 -0
  3. package/README.md +47 -0
  4. package/agent/access/slack-attachment-fetch.ts +168 -0
  5. package/agent/app-manifest.ts +149 -0
  6. package/agent/channels/slack-approval-card.ts +275 -0
  7. package/agent/channels/slack-attachments.ts +195 -0
  8. package/agent/channels/slack-commands.ts +227 -0
  9. package/agent/channels/slack-context.ts +185 -0
  10. package/agent/channels/slack-events.ts +5406 -0
  11. package/agent/channels/slack-front.ts +2349 -0
  12. package/agent/channels/slack-identity.ts +520 -0
  13. package/agent/channels/slack-input-response.ts +162 -0
  14. package/agent/channels/slack-mrkdwn.ts +61 -0
  15. package/agent/channels/slack-origin-codec.ts +62 -0
  16. package/agent/channels/slack-post-arm.ts +314 -0
  17. package/agent/channels/slack-read.ts +248 -0
  18. package/agent/channels/slack-route-hold.ts +107 -0
  19. package/agent/channels/slack-shortcut.ts +336 -0
  20. package/agent/channels/slack-signature.ts +53 -0
  21. package/agent/channels/slack-spend-gate.ts +62 -0
  22. package/agent/channels/slack-tenant-fence.ts +99 -0
  23. package/agent/channels/slack-wake-backscroll.ts +604 -0
  24. package/agent/channels/slack-web-api.ts +178 -0
  25. package/agent/channels/slack-webhook-verifier.ts +116 -0
  26. package/agent/channels/slack.ts +1266 -0
  27. package/agent/contributions.ts +32 -0
  28. package/agent/docs-generated.ts +15 -0
  29. package/agent/ops.ts +50 -0
  30. package/agent/provider-events.ts +91 -0
  31. package/agent/register.ts +144 -0
  32. package/agent/surface-parity.ts +99 -0
  33. package/dist/agent/access/slack-attachment-fetch.d.ts +15 -0
  34. package/dist/agent/access/slack-attachment-fetch.d.ts.map +1 -0
  35. package/dist/agent/access/slack-attachment-fetch.js +151 -0
  36. package/dist/agent/access/slack-attachment-fetch.js.map +1 -0
  37. package/dist/agent/app-manifest.d.ts +15 -0
  38. package/dist/agent/app-manifest.d.ts.map +1 -0
  39. package/dist/agent/app-manifest.js +141 -0
  40. package/dist/agent/app-manifest.js.map +1 -0
  41. package/dist/agent/channels/slack-approval-card.d.ts +71 -0
  42. package/dist/agent/channels/slack-approval-card.d.ts.map +1 -0
  43. package/dist/agent/channels/slack-approval-card.js +232 -0
  44. package/dist/agent/channels/slack-approval-card.js.map +1 -0
  45. package/dist/agent/channels/slack-attachments.d.ts +66 -0
  46. package/dist/agent/channels/slack-attachments.d.ts.map +1 -0
  47. package/dist/agent/channels/slack-attachments.js +174 -0
  48. package/dist/agent/channels/slack-attachments.js.map +1 -0
  49. package/dist/agent/channels/slack-commands.d.ts +27 -0
  50. package/dist/agent/channels/slack-commands.d.ts.map +1 -0
  51. package/dist/agent/channels/slack-commands.js +208 -0
  52. package/dist/agent/channels/slack-commands.js.map +1 -0
  53. package/dist/agent/channels/slack-context.d.ts +26 -0
  54. package/dist/agent/channels/slack-context.d.ts.map +1 -0
  55. package/dist/agent/channels/slack-context.js +178 -0
  56. package/dist/agent/channels/slack-context.js.map +1 -0
  57. package/dist/agent/channels/slack-events.d.ts +1654 -0
  58. package/dist/agent/channels/slack-events.d.ts.map +1 -0
  59. package/dist/agent/channels/slack-events.js +4240 -0
  60. package/dist/agent/channels/slack-events.js.map +1 -0
  61. package/dist/agent/channels/slack-front.d.ts +387 -0
  62. package/dist/agent/channels/slack-front.d.ts.map +1 -0
  63. package/dist/agent/channels/slack-front.js +1958 -0
  64. package/dist/agent/channels/slack-front.js.map +1 -0
  65. package/dist/agent/channels/slack-identity.d.ts +245 -0
  66. package/dist/agent/channels/slack-identity.d.ts.map +1 -0
  67. package/dist/agent/channels/slack-identity.js +405 -0
  68. package/dist/agent/channels/slack-identity.js.map +1 -0
  69. package/dist/agent/channels/slack-input-response.d.ts +26 -0
  70. package/dist/agent/channels/slack-input-response.d.ts.map +1 -0
  71. package/dist/agent/channels/slack-input-response.js +127 -0
  72. package/dist/agent/channels/slack-input-response.js.map +1 -0
  73. package/dist/agent/channels/slack-mrkdwn.d.ts +3 -0
  74. package/dist/agent/channels/slack-mrkdwn.d.ts.map +1 -0
  75. package/dist/agent/channels/slack-mrkdwn.js +53 -0
  76. package/dist/agent/channels/slack-mrkdwn.js.map +1 -0
  77. package/dist/agent/channels/slack-origin-codec.d.ts +7 -0
  78. package/dist/agent/channels/slack-origin-codec.d.ts.map +1 -0
  79. package/dist/agent/channels/slack-origin-codec.js +55 -0
  80. package/dist/agent/channels/slack-origin-codec.js.map +1 -0
  81. package/dist/agent/channels/slack-post-arm.d.ts +54 -0
  82. package/dist/agent/channels/slack-post-arm.d.ts.map +1 -0
  83. package/dist/agent/channels/slack-post-arm.js +268 -0
  84. package/dist/agent/channels/slack-post-arm.js.map +1 -0
  85. package/dist/agent/channels/slack-read.d.ts +84 -0
  86. package/dist/agent/channels/slack-read.d.ts.map +1 -0
  87. package/dist/agent/channels/slack-read.js +205 -0
  88. package/dist/agent/channels/slack-read.js.map +1 -0
  89. package/dist/agent/channels/slack-route-hold.d.ts +34 -0
  90. package/dist/agent/channels/slack-route-hold.d.ts.map +1 -0
  91. package/dist/agent/channels/slack-route-hold.js +97 -0
  92. package/dist/agent/channels/slack-route-hold.js.map +1 -0
  93. package/dist/agent/channels/slack-shortcut.d.ts +162 -0
  94. package/dist/agent/channels/slack-shortcut.d.ts.map +1 -0
  95. package/dist/agent/channels/slack-shortcut.js +262 -0
  96. package/dist/agent/channels/slack-shortcut.js.map +1 -0
  97. package/dist/agent/channels/slack-signature.d.ts +19 -0
  98. package/dist/agent/channels/slack-signature.d.ts.map +1 -0
  99. package/dist/agent/channels/slack-signature.js +50 -0
  100. package/dist/agent/channels/slack-signature.js.map +1 -0
  101. package/dist/agent/channels/slack-spend-gate.d.ts +22 -0
  102. package/dist/agent/channels/slack-spend-gate.d.ts.map +1 -0
  103. package/dist/agent/channels/slack-spend-gate.js +48 -0
  104. package/dist/agent/channels/slack-spend-gate.js.map +1 -0
  105. package/dist/agent/channels/slack-tenant-fence.d.ts +61 -0
  106. package/dist/agent/channels/slack-tenant-fence.d.ts.map +1 -0
  107. package/dist/agent/channels/slack-tenant-fence.js +88 -0
  108. package/dist/agent/channels/slack-tenant-fence.js.map +1 -0
  109. package/dist/agent/channels/slack-wake-backscroll.d.ts +188 -0
  110. package/dist/agent/channels/slack-wake-backscroll.d.ts.map +1 -0
  111. package/dist/agent/channels/slack-wake-backscroll.js +473 -0
  112. package/dist/agent/channels/slack-wake-backscroll.js.map +1 -0
  113. package/dist/agent/channels/slack-web-api.d.ts +46 -0
  114. package/dist/agent/channels/slack-web-api.d.ts.map +1 -0
  115. package/dist/agent/channels/slack-web-api.js +147 -0
  116. package/dist/agent/channels/slack-web-api.js.map +1 -0
  117. package/dist/agent/channels/slack-webhook-verifier.d.ts +5 -0
  118. package/dist/agent/channels/slack-webhook-verifier.d.ts.map +1 -0
  119. package/dist/agent/channels/slack-webhook-verifier.js +112 -0
  120. package/dist/agent/channels/slack-webhook-verifier.js.map +1 -0
  121. package/dist/agent/channels/slack.d.ts +37 -0
  122. package/dist/agent/channels/slack.d.ts.map +1 -0
  123. package/dist/agent/channels/slack.js +1169 -0
  124. package/dist/agent/channels/slack.js.map +1 -0
  125. package/dist/agent/contributions.d.ts +17 -0
  126. package/dist/agent/contributions.d.ts.map +1 -0
  127. package/dist/agent/contributions.js +32 -0
  128. package/dist/agent/contributions.js.map +1 -0
  129. package/dist/agent/docs-generated.d.ts +3 -0
  130. package/dist/agent/docs-generated.d.ts.map +1 -0
  131. package/dist/agent/docs-generated.js +13 -0
  132. package/dist/agent/docs-generated.js.map +1 -0
  133. package/dist/agent/ops.d.ts +3 -0
  134. package/dist/agent/ops.d.ts.map +1 -0
  135. package/dist/agent/ops.js +38 -0
  136. package/dist/agent/ops.js.map +1 -0
  137. package/dist/agent/provider-events.d.ts +3 -0
  138. package/dist/agent/provider-events.d.ts.map +1 -0
  139. package/dist/agent/provider-events.js +84 -0
  140. package/dist/agent/provider-events.js.map +1 -0
  141. package/dist/agent/register.d.ts +5 -0
  142. package/dist/agent/register.d.ts.map +1 -0
  143. package/dist/agent/register.js +118 -0
  144. package/dist/agent/register.js.map +1 -0
  145. package/dist/agent/surface-parity.d.ts +3 -0
  146. package/dist/agent/surface-parity.d.ts.map +1 -0
  147. package/dist/agent/surface-parity.js +95 -0
  148. package/dist/agent/surface-parity.js.map +1 -0
  149. package/package.json +209 -0
  150. package/tsconfig.build.json +22 -0
  151. package/tsconfig.json +15 -0
@@ -0,0 +1,95 @@
1
+ // SLACK's surface-parity declaration (OPE-1499) — every capability the chat-surface contract
2
+ // names, answered. Registered by registerSlackProvider(); read by `npm run lint:surface-parity`
3
+ // and by the generator that renders the contract's §7.1, §7.1.1 and §7.2 tables.
4
+ //
5
+ // Slack is the REFERENCE SURFACE: it honours every capability, so this file is the shape a new
6
+ // provider copies and then argues with. The two qualified cells below are the interesting ones —
7
+ // both are "honoured, by a different route than a reader would assume".
8
+ export const SLACK_SURFACE_PARITY = {
9
+ // --- registration seams (§7.1) ---------------------------------------------------------------
10
+ "identity-mapper": "supported",
11
+ "capability-manifest": "supported",
12
+ "post-arm": "supported",
13
+ "wake-origin-codec": "supported",
14
+ // The arm renders the buttons (`slack-post-arm.ts`), the front routes the tap back
15
+ // (`slack-front.ts` classifies `oe_input:`, `slack-approval-card.ts` settles it), and the settle
16
+ // DELIVERS through core's `approvalCardRespondVia` — all three halves, as the row requires. The
17
+ // third is not a formality: this front bound its own `args.from(bareToken)` until OPE-1863, and
18
+ // that address is channel-local, so every tap threw and the approval stayed parked.
19
+ "unified-action-plane": "supported",
20
+ // `replyAnchorTs` is placement only and sits outside `threadRef`, so two top-level wakes in one
21
+ // channel are ONE conversation carrying two different anchors. Both members are implemented.
22
+ "origin-placement-carry": "supported",
23
+ "read-adapter": "supported",
24
+ "reaction-feedback-ingest": "supported",
25
+ // Slack registers no `SurfaceMessageOps` row: its ancillary posts ride Eve's own Slack client
26
+ // path (channels/slack-events.ts `slackForm`), not a bot-token REST call through the registry.
27
+ // The effect is identical; only the transport differs — so the capability IS honoured and the
28
+ // note is what stops the empty registry row reading as a gap.
29
+ "ancillary-ops": { supported: "inline — rides Eve's own Slack client path, not the ops registry" },
30
+ "ambient-engagement-seam": "supported",
31
+ // 🔴 NOTHING TO PROMOTE, NOT A GAP TO CLOSE. Slack writes no `slack.dispatched` action at all, so
32
+ // this surface has no dispatch row carrying an `addressing` value. `J-ENGAGED-slack` still asks
33
+ // for `thread-follow`, and `gateEngagedWake` SKIPS on the empty dispatch read by design — the leg
34
+ // rests on its reply and stand-down proofs instead.
35
+ "engaged-row-promotion": { unsupported: "no dispatch row — Slack writes no `slack.dispatched` action, so there is no `addressing` value to promote" },
36
+ // The FIRST surface to consult thread ownership at ingest, and the reference wiring for the other
37
+ // five: `slack-front.ts`'s `withSingleWindowDiversion` calls `divertInboundToUnifiedWindow`, and a
38
+ // wake whose origin carries a `threadTs` is what the router reads as thread-scoped.
39
+ // BOTH legs, and the DM one is not a formality: a Slack DM message that genuinely sits in a thread
40
+ // keeps its `threadTs`, so a DM thread can be owned. `scheduleDmWake` ran on the RAW divert until
41
+ // OPE-1719, which orphaned any seat spawned inside one.
42
+ "owned-thread-ingress": "supported",
43
+ // The reference wiring for the other five: `slack-wake-backscroll.ts slackSeatCatchUpFetch` reads
44
+ // `conversations.history` since the seat's own `lastWakeAt`, enriches in-window threads with
45
+ // `conversations.replies`, and hands the normalized window to core's shared catch-up path.
46
+ "seat-catch-up": "supported",
47
+ // The name-drop hydration pours into the seat's context slot on the SEAT ROAD, and that pour goes
48
+ // through `admitContextLines` (slack-events.ts, `deps.seatRoute` present). An UNSEATED deployment
49
+ // takes the same thunk with no policy, which is not an unpoliced seat: there is no seat to govern.
50
+ "seat-context-admission": "supported",
51
+ // The BUILT-IN path: core renders Block Kit and posts it itself, so this surface registers no
52
+ // `CardPoster` and is the one platform `hasApprovalCardPath` answers by name.
53
+ // 🔴 BARE, NOT `{ supported: "…" }`. A noted cell is EXEMPT from the overclaim arm by design, and
54
+ // the whole value of this row is that arm: drop the built-in render and the cell must go red.
55
+ "approval-card": "supported",
56
+ // The same built-in path renders the judge-lift notice, so a lifted act posts a notice carrying
57
+ // the one "This should not have run" button, and `slack-front.ts` routes that tap back through
58
+ // core's shared `contradict` decision.
59
+ "judge-lift-notice": "supported",
60
+ // --- wake legs and conversation shapes -------------------------------------------------------
61
+ "addressed-leg": "supported",
62
+ "ambient-leg": "supported",
63
+ "name-drop-mention": "supported",
64
+ // THE ONLY SURFACE THAT WAKES ON AN EDIT, and the reason the shared rule reads wider than it is:
65
+ // `shouldDeliverReply` carves `message_changed` out of its blanket subtype refusal, and Slack is
66
+ // the only bundle whose door ever sees the event. `routeMessageEvent` then dispatches it as a
67
+ // `message-edited` wake carrying `<previous-body>` (slack-events.ts).
68
+ "message-edit-wake": "supported",
69
+ threads: "supported",
70
+ rooms: "supported",
71
+ dm: "supported",
72
+ mpim: "supported",
73
+ // --- core verbs (§7.2) -----------------------------------------------------------------------
74
+ reply: "supported",
75
+ edit_reply: "supported",
76
+ react: "supported",
77
+ no_reply: "supported",
78
+ read_channel: "supported",
79
+ read_thread: "supported",
80
+ // `search` federates WORK connectors and mounts on the session's grants, not on the bound
81
+ // surface. Slack registers no work-search adapter, so it contributes no searchable corpus — a
82
+ // Slack-bound session still mounts the verb when its domain holds a ticketing grant (§4.7).
83
+ search: { unsupported: "no work-search adapter — Slack is a chat surface, not a work corpus (§4.7)" },
84
+ post_message: "supported",
85
+ dm_person: "supported",
86
+ set_dm_delivery: "supported",
87
+ stop: { supported: "✋ reaction, plus the `/oe stop` command" },
88
+ ack_stop_glyph: "supported",
89
+ ack_cancel_note: "supported",
90
+ // The verb marks a real engagement row when the registry holds one, and refuses out loud when it
91
+ // does not (§4.10, §7.6) — a refusal on a missing ROW, never on a missing anchor.
92
+ stand_down: { supported: "marks the engagement row; refuses out loud when the registry holds none" },
93
+ post_file: "supported",
94
+ };
95
+ //# sourceMappingURL=surface-parity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface-parity.js","sourceRoot":"","sources":["../../agent/surface-parity.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,gGAAgG;AAChG,iFAAiF;AACjF,EAAE;AACF,+FAA+F;AAC/F,iGAAiG;AACjG,wEAAwE;AAIxE,MAAM,CAAC,MAAM,oBAAoB,GAA6B;IAC5D,gGAAgG;IAChG,iBAAiB,EAAE,WAAW;IAC9B,qBAAqB,EAAE,WAAW;IAClC,UAAU,EAAE,WAAW;IACvB,mBAAmB,EAAE,WAAW;IAChC,mFAAmF;IACnF,iGAAiG;IACjG,gGAAgG;IAChG,gGAAgG;IAChG,oFAAoF;IACpF,sBAAsB,EAAE,WAAW;IACnC,gGAAgG;IAChG,6FAA6F;IAC7F,wBAAwB,EAAE,WAAW;IACrC,cAAc,EAAE,WAAW;IAC3B,0BAA0B,EAAE,WAAW;IACvC,8FAA8F;IAC9F,+FAA+F;IAC/F,8FAA8F;IAC9F,8DAA8D;IAC9D,eAAe,EAAE,EAAE,SAAS,EAAE,kEAAkE,EAAE;IAClG,yBAAyB,EAAE,WAAW;IACtC,kGAAkG;IAClG,gGAAgG;IAChG,kGAAkG;IAClG,oDAAoD;IACpD,uBAAuB,EAAE,EAAE,WAAW,EAAE,2GAA2G,EAAE;IACrJ,kGAAkG;IAClG,mGAAmG;IACnG,oFAAoF;IACpF,mGAAmG;IACnG,kGAAkG;IAClG,wDAAwD;IACxD,sBAAsB,EAAE,WAAW;IACnC,kGAAkG;IAClG,6FAA6F;IAC7F,2FAA2F;IAC3F,eAAe,EAAE,WAAW;IAC5B,kGAAkG;IAClG,kGAAkG;IAClG,mGAAmG;IACnG,wBAAwB,EAAE,WAAW;IACrC,8FAA8F;IAC9F,8EAA8E;IAC9E,kGAAkG;IAClG,8FAA8F;IAC9F,eAAe,EAAE,WAAW;IAC5B,gGAAgG;IAChG,+FAA+F;IAC/F,uCAAuC;IACvC,mBAAmB,EAAE,WAAW;IAEhC,gGAAgG;IAChG,eAAe,EAAE,WAAW;IAC5B,aAAa,EAAE,WAAW;IAC1B,mBAAmB,EAAE,WAAW;IAChC,iGAAiG;IACjG,iGAAiG;IACjG,8FAA8F;IAC9F,sEAAsE;IACtE,mBAAmB,EAAE,WAAW;IAChC,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,WAAW;IAClB,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,WAAW;IAEjB,gGAAgG;IAChG,KAAK,EAAE,WAAW;IAClB,UAAU,EAAE,WAAW;IACvB,KAAK,EAAE,WAAW;IAClB,QAAQ,EAAE,WAAW;IACrB,YAAY,EAAE,WAAW;IACzB,WAAW,EAAE,WAAW;IACxB,0FAA0F;IAC1F,8FAA8F;IAC9F,4FAA4F;IAC5F,MAAM,EAAE,EAAE,WAAW,EAAE,4EAA4E,EAAE;IACrG,YAAY,EAAE,WAAW;IACzB,SAAS,EAAE,WAAW;IACtB,eAAe,EAAE,WAAW;IAC5B,IAAI,EAAE,EAAE,SAAS,EAAE,yCAAyC,EAAE;IAC9D,cAAc,EAAE,WAAW;IAC3B,eAAe,EAAE,WAAW;IAC5B,iGAAiG;IACjG,kFAAkF;IAClF,UAAU,EAAE,EAAE,SAAS,EAAE,yEAAyE,EAAE;IACpG,SAAS,EAAE,WAAW;CACvB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,209 @@
1
+ {
2
+ "name": "@open-everywhere/provider-slack",
3
+ "version": "0.1.0",
4
+ "description": "Open Everywhere Slack provider — Slack channel and DM surfaces, identity mapping, approval cards and slash commands.",
5
+ "keywords": [
6
+ "agent",
7
+ "slack",
8
+ "slack-bot",
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/slack",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/open-everywhere/open-everywhere.git",
18
+ "directory": "packages/providers/slack"
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/access/slack-attachment-fetch.js": {
40
+ "types": "./dist/agent/access/slack-attachment-fetch.d.ts",
41
+ "default": "./dist/agent/access/slack-attachment-fetch.js"
42
+ },
43
+ "./agent/app-manifest.js": {
44
+ "types": "./dist/agent/app-manifest.d.ts",
45
+ "default": "./dist/agent/app-manifest.js"
46
+ },
47
+ "./agent/channels/slack-approval-card.js": {
48
+ "types": "./dist/agent/channels/slack-approval-card.d.ts",
49
+ "default": "./dist/agent/channels/slack-approval-card.js"
50
+ },
51
+ "./agent/channels/slack-attachments.js": {
52
+ "types": "./dist/agent/channels/slack-attachments.d.ts",
53
+ "default": "./dist/agent/channels/slack-attachments.js"
54
+ },
55
+ "./agent/channels/slack-commands.js": {
56
+ "types": "./dist/agent/channels/slack-commands.d.ts",
57
+ "default": "./dist/agent/channels/slack-commands.js"
58
+ },
59
+ "./agent/channels/slack-context.js": {
60
+ "types": "./dist/agent/channels/slack-context.d.ts",
61
+ "default": "./dist/agent/channels/slack-context.js"
62
+ },
63
+ "./agent/channels/slack-events.js": {
64
+ "types": "./dist/agent/channels/slack-events.d.ts",
65
+ "default": "./dist/agent/channels/slack-events.js"
66
+ },
67
+ "./agent/channels/slack-front.js": {
68
+ "types": "./dist/agent/channels/slack-front.d.ts",
69
+ "default": "./dist/agent/channels/slack-front.js"
70
+ },
71
+ "./agent/channels/slack-identity.js": {
72
+ "types": "./dist/agent/channels/slack-identity.d.ts",
73
+ "default": "./dist/agent/channels/slack-identity.js"
74
+ },
75
+ "./agent/channels/slack-input-response.js": {
76
+ "types": "./dist/agent/channels/slack-input-response.d.ts",
77
+ "default": "./dist/agent/channels/slack-input-response.js"
78
+ },
79
+ "./agent/channels/slack-mrkdwn.js": {
80
+ "types": "./dist/agent/channels/slack-mrkdwn.d.ts",
81
+ "default": "./dist/agent/channels/slack-mrkdwn.js"
82
+ },
83
+ "./agent/channels/slack-origin-codec.js": {
84
+ "types": "./dist/agent/channels/slack-origin-codec.d.ts",
85
+ "default": "./dist/agent/channels/slack-origin-codec.js"
86
+ },
87
+ "./agent/channels/slack-post-arm.js": {
88
+ "types": "./dist/agent/channels/slack-post-arm.d.ts",
89
+ "default": "./dist/agent/channels/slack-post-arm.js"
90
+ },
91
+ "./agent/channels/slack-read.js": {
92
+ "types": "./dist/agent/channels/slack-read.d.ts",
93
+ "default": "./dist/agent/channels/slack-read.js"
94
+ },
95
+ "./agent/channels/slack-route-hold.js": {
96
+ "types": "./dist/agent/channels/slack-route-hold.d.ts",
97
+ "default": "./dist/agent/channels/slack-route-hold.js"
98
+ },
99
+ "./agent/channels/slack-shortcut.js": {
100
+ "types": "./dist/agent/channels/slack-shortcut.d.ts",
101
+ "default": "./dist/agent/channels/slack-shortcut.js"
102
+ },
103
+ "./agent/channels/slack-signature.js": {
104
+ "types": "./dist/agent/channels/slack-signature.d.ts",
105
+ "default": "./dist/agent/channels/slack-signature.js"
106
+ },
107
+ "./agent/channels/slack-spend-gate.js": {
108
+ "types": "./dist/agent/channels/slack-spend-gate.d.ts",
109
+ "default": "./dist/agent/channels/slack-spend-gate.js"
110
+ },
111
+ "./agent/channels/slack-tenant-fence.js": {
112
+ "types": "./dist/agent/channels/slack-tenant-fence.d.ts",
113
+ "default": "./dist/agent/channels/slack-tenant-fence.js"
114
+ },
115
+ "./agent/channels/slack-wake-backscroll.js": {
116
+ "types": "./dist/agent/channels/slack-wake-backscroll.d.ts",
117
+ "default": "./dist/agent/channels/slack-wake-backscroll.js"
118
+ },
119
+ "./agent/channels/slack-web-api.js": {
120
+ "types": "./dist/agent/channels/slack-web-api.d.ts",
121
+ "default": "./dist/agent/channels/slack-web-api.js"
122
+ },
123
+ "./agent/channels/slack-webhook-verifier.js": {
124
+ "types": "./dist/agent/channels/slack-webhook-verifier.d.ts",
125
+ "default": "./dist/agent/channels/slack-webhook-verifier.js"
126
+ },
127
+ "./agent/channels/slack.js": {
128
+ "types": "./dist/agent/channels/slack.d.ts",
129
+ "default": "./dist/agent/channels/slack.js"
130
+ },
131
+ "./agent/contributions.js": {
132
+ "types": "./dist/agent/contributions.d.ts",
133
+ "default": "./dist/agent/contributions.js"
134
+ },
135
+ "./agent/docs-generated.js": {
136
+ "types": "./dist/agent/docs-generated.d.ts",
137
+ "default": "./dist/agent/docs-generated.js"
138
+ },
139
+ "./agent/ops.js": {
140
+ "types": "./dist/agent/ops.d.ts",
141
+ "default": "./dist/agent/ops.js"
142
+ },
143
+ "./agent/provider-events.js": {
144
+ "types": "./dist/agent/provider-events.d.ts",
145
+ "default": "./dist/agent/provider-events.js"
146
+ },
147
+ "./agent/register.js": {
148
+ "types": "./dist/agent/register.d.ts",
149
+ "default": "./dist/agent/register.js"
150
+ },
151
+ "./agent/surface-parity.js": {
152
+ "types": "./dist/agent/surface-parity.d.ts",
153
+ "default": "./dist/agent/surface-parity.js"
154
+ }
155
+ },
156
+ "scripts": {
157
+ "build": "tsc -p tsconfig.build.json",
158
+ "typecheck": "tsc --noEmit -p tsconfig.json",
159
+ "test": "npm run test:chain",
160
+ "test:chain": "npm run test:slack-e2e && npm run test:slack-context && npm run test:slack-wake-backscroll && npm run test:slack-identity && npm run test:slack-spend-gate && npm run test:slack-wake-mapping && npm run test:slack-tenant-fence && npm run test:slack-wake-drop-hold && npm run test:slack-engagement && npm run test:slack-grant-card &&npm run test:slack-supervisor-reply && npm run test:slack-replier-label && npm run test:slack-normalized-wake && npm run test:slack-wake-trust && npm run test:slack-nonmember-author && npm run test:slack-contextline-trust && npm run test:slack-dm-seat && npm run test:slack-dm-divert && npm run test:slack-shortcut && npm run test:slack-enterprise-rung && npm run test:slack-attachments && npm run test:slack-commands && npm run test:slack-reaction-ingest && npm run test:slack-chat-audit && npm run test:slack-scope-audit && npm run test:slack-app-manifest && npm run test:slack-workspace-roster && npm run test:slack-webhook-verifier && npm run test:slack-input-response && npm run test:slack-approval-card && npm run test:slack-mrkdwn && npm run test:slack-native-wake-heal && npm run test:slack-rate-limit && npm run test:slack-web-api-seam",
161
+ "test:slack-webhook-verifier": "NODE_NO_WARNINGS=1 tsx scripts/slack-webhook-verifier-test.ts",
162
+ "test:slack-workspace-roster": "NODE_NO_WARNINGS=1 tsx scripts/slack-workspace-roster-test.ts",
163
+ "test:slack-scope-audit": "NODE_NO_WARNINGS=1 tsx scripts/slack-scope-audit-test.ts",
164
+ "test:slack-app-manifest": "NODE_NO_WARNINGS=1 tsx scripts/slack-app-manifest-test.ts",
165
+ "test:slack-commands": "NODE_NO_WARNINGS=1 tsx scripts/slack-commands-test.ts",
166
+ "test:slack-reaction-ingest": "NODE_NO_WARNINGS=1 tsx scripts/slack-reaction-ingest-test.ts",
167
+ "test:slack-chat-audit": "NODE_NO_WARNINGS=1 tsx scripts/slack-chat-audit-test.ts",
168
+ "test:slack-e2e": "NODE_NO_WARNINGS=1 tsx scripts/slack-e2e-test.ts",
169
+ "test:slack-context": "NODE_NO_WARNINGS=1 tsx scripts/slack-context-test.ts",
170
+ "test:slack-wake-backscroll": "NODE_NO_WARNINGS=1 tsx scripts/slack-wake-backscroll-test.ts",
171
+ "test:slack-identity": "NODE_NO_WARNINGS=1 tsx scripts/slack-identity-test.ts",
172
+ "test:slack-spend-gate": "NODE_NO_WARNINGS=1 tsx scripts/slack-spend-gate-test.ts",
173
+ "test:slack-wake-mapping": "NODE_NO_WARNINGS=1 tsx scripts/slack-wake-mapping-test.ts",
174
+ "test:slack-tenant-fence": "NODE_NO_WARNINGS=1 tsx scripts/slack-tenant-fence-test.ts",
175
+ "test:slack-engagement": "NODE_NO_WARNINGS=1 tsx scripts/slack-engagement-test.ts",
176
+ "test:slack-grant-card": "NODE_NO_WARNINGS=1 tsx scripts/slack-grant-card-test.ts",
177
+ "test:slack-supervisor-reply": "NODE_NO_WARNINGS=1 tsx scripts/slack-supervisor-reply-test.ts",
178
+ "test:slack-replier-label": "NODE_NO_WARNINGS=1 tsx scripts/slack-replier-label-test.ts",
179
+ "test:slack-normalized-wake": "NODE_NO_WARNINGS=1 tsx scripts/slack-normalized-wake-test.ts",
180
+ "test:slack-nonmember-author": "NODE_NO_WARNINGS=1 tsx scripts/slack-nonmember-author-test.ts",
181
+ "test:slack-contextline-trust": "NODE_NO_WARNINGS=1 tsx scripts/slack-contextline-trust-test.ts",
182
+ "test:slack-wake-trust": "NODE_NO_WARNINGS=1 tsx scripts/slack-wake-trust-test.ts",
183
+ "test:slack-dm-seat": "NODE_NO_WARNINGS=1 tsx scripts/slack-dm-seat-test.ts",
184
+ "test:slack-dm-divert": "NODE_NO_WARNINGS=1 tsx scripts/slack-dm-divert-test.ts",
185
+ "test:slack-shortcut": "NODE_NO_WARNINGS=1 tsx scripts/slack-shortcut-test.ts",
186
+ "test:slack-enterprise-rung": "NODE_NO_WARNINGS=1 tsx scripts/slack-enterprise-rung-test.ts",
187
+ "test:slack-native-wake-heal": "NODE_NO_WARNINGS=1 tsx scripts/slack-native-wake-heal-test.ts",
188
+ "test:slack-attachments": "NODE_NO_WARNINGS=1 tsx scripts/slack-attachments-test.ts",
189
+ "test:slack-input-response": "NODE_NO_WARNINGS=1 tsx scripts/slack-input-response-test.ts",
190
+ "test:slack-approval-card": "NODE_NO_WARNINGS=1 tsx scripts/slack-approval-card-test.ts",
191
+ "test:slack-mrkdwn": "NODE_NO_WARNINGS=1 tsx scripts/slack-mrkdwn-test.ts",
192
+ "test:slack-rate-limit": "NODE_NO_WARNINGS=1 tsx scripts/slack-rate-limit-test.ts",
193
+ "test:slack-web-api-seam": "NODE_NO_WARNINGS=1 tsx scripts/slack-web-api-seam-test.ts",
194
+ "test:slack-wake-drop-hold": "NODE_NO_WARNINGS=1 tsx scripts/slack-wake-drop-hold-test.ts"
195
+ },
196
+ "dependencies": {
197
+ "@open-everywhere/core": "0.1.0",
198
+ "undici": "^7.28.0",
199
+ "zod": "4.5.4"
200
+ },
201
+ "peerDependencies": {
202
+ "eve": "0.54.3"
203
+ },
204
+ "devDependencies": {
205
+ "@types/node": "latest",
206
+ "tsx": "latest",
207
+ "typescript": "latest"
208
+ }
209
+ }
@@ -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
+ }