experimental-ash 0.2.0-alpha.25 → 0.2.0-alpha.26
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/src/channel/slack-types.d.ts +10 -0
- package/dist/src/channel/slack-types.d.ts.map +1 -1
- package/dist/src/context/container.d.ts +10 -1
- package/dist/src/context/container.d.ts.map +1 -1
- package/dist/src/context/container.js +15 -0
- package/dist/src/context/container.js.map +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/public/channels/slack/slack-interaction.d.ts.map +1 -1
- package/dist/src/public/channels/slack/slack-interaction.js +35 -25
- package/dist/src/public/channels/slack/slack-interaction.js.map +1 -1
- package/docs/public/channels/README.md +18 -6
- package/docs/public/typescript-api.md +1 -0
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ContextReader } from "../context/key.js";
|
|
1
2
|
import type { InputResponse } from "../runtime/input/types.js";
|
|
2
3
|
/**
|
|
3
4
|
* File attachment authored against Ash's Slack surface.
|
|
@@ -168,6 +169,15 @@ export interface SlackThreadHandle {
|
|
|
168
169
|
export interface SlackInteractionContext {
|
|
169
170
|
readonly channelId: string;
|
|
170
171
|
readonly continuationToken: string;
|
|
172
|
+
/**
|
|
173
|
+
* Read-only view of the last durable authored context committed for the
|
|
174
|
+
* parked session.
|
|
175
|
+
*
|
|
176
|
+
* This is built from `getSessionSnapshot(...).context` at route time. It
|
|
177
|
+
* contains only durable authored keys; framework-internal `ash.*` values
|
|
178
|
+
* and per-step provider output are not included.
|
|
179
|
+
*/
|
|
180
|
+
readonly context: ContextReader;
|
|
171
181
|
readonly messageTs: string;
|
|
172
182
|
readonly threadTs: string;
|
|
173
183
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-types.d.ts","sourceRoot":"","sources":["../../../src/channel/slack-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack-types.d.ts","sourceRoot":"","sources":["../../../src/channel/slack-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
import { type ContextAccessor, type ContextKey } from "./key.js";
|
|
2
|
+
import { type ContextAccessor, type ContextKey, type ContextReader } from "./key.js";
|
|
3
3
|
/**
|
|
4
4
|
* Keyed value container that backs one Ash execution scope.
|
|
5
5
|
*
|
|
@@ -55,4 +55,13 @@ export declare function loadContext(): AshContext;
|
|
|
55
55
|
* `onDeliver` callbacks without exposing implementation details.
|
|
56
56
|
*/
|
|
57
57
|
export declare function toContextAccessor(ctx: ContextContainer): ContextAccessor;
|
|
58
|
+
/**
|
|
59
|
+
* Narrows a context implementation to a read-only {@link ContextReader}
|
|
60
|
+
* facade.
|
|
61
|
+
*
|
|
62
|
+
* Used by route-time APIs such as Slack interactions where authored code
|
|
63
|
+
* should be able to inspect durable context but must not receive mutable
|
|
64
|
+
* context methods that imply writes will persist.
|
|
65
|
+
*/
|
|
66
|
+
export declare function toContextReader(ctx: ContextReader): ContextReader;
|
|
58
67
|
//# sourceMappingURL=container.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/context/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAc,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/context/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAc,MAAM,UAAU,CAAC;AAEjG;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD;;;OAGG;IACH,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9D;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAE7D,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAOzC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;IAOjC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO;IAInC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,GAAG,CAAC;IASlF,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;IAOjD;;;;;OAKG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIvD,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;CAQ/D;AAED,eAAO,MAAM,cAAc,+BAAsC,CAAC;AAElE;;GAEG;AACH,wBAAgB,WAAW,IAAI,UAAU,CASxC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,eAAe,CAExE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAMjE"}
|
|
@@ -81,4 +81,19 @@ export function loadContext() {
|
|
|
81
81
|
export function toContextAccessor(ctx) {
|
|
82
82
|
return ctx;
|
|
83
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Narrows a context implementation to a read-only {@link ContextReader}
|
|
86
|
+
* facade.
|
|
87
|
+
*
|
|
88
|
+
* Used by route-time APIs such as Slack interactions where authored code
|
|
89
|
+
* should be able to inspect durable context but must not receive mutable
|
|
90
|
+
* context methods that imply writes will persist.
|
|
91
|
+
*/
|
|
92
|
+
export function toContextReader(ctx) {
|
|
93
|
+
return {
|
|
94
|
+
get: ctx.get.bind(ctx),
|
|
95
|
+
has: ctx.has.bind(ctx),
|
|
96
|
+
require: ctx.require.bind(ctx),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
84
99
|
//# sourceMappingURL=container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/context/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/context/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { ASH_PACKAGE_NAME } from "../../package-name.js";
|
|
|
6
6
|
let cachedPackageInfo;
|
|
7
7
|
// The package build stamps the published version into `dist` so bundled
|
|
8
8
|
// deployments can still report package metadata without resolving package.json.
|
|
9
|
-
const BUNDLED_FALLBACK_PACKAGE_VERSION = "0.2.0-alpha.
|
|
9
|
+
const BUNDLED_FALLBACK_PACKAGE_VERSION = "0.2.0-alpha.26";
|
|
10
10
|
const BUNDLED_FALLBACK_PACKAGE_VERSION_PLACEHOLDER = "__ASH_PACKAGE_VERSION_PLACEHOLDER__";
|
|
11
11
|
function resolveFallbackPackageVersion() {
|
|
12
12
|
return BUNDLED_FALLBACK_PACKAGE_VERSION === BUNDLED_FALLBACK_PACKAGE_VERSION_PLACEHOLDER
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-interaction.d.ts","sourceRoot":"","sources":["../../../../../src/public/channels/slack/slack-interaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"slack-interaction.d.ts","sourceRoot":"","sources":["../../../../../src/public/channels/slack/slack-interaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAMzD,KAAK,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AA0BpG,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,cAAc,MAAM,CAAC,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,QAAQ,CAAC,CAwCnB"}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { deriveInputResponsesFromInteraction, SlackChannel, } from "../../../channel/slack-channel.js";
|
|
12
12
|
import { createSlackCardKit, toSlackPostableMessage } from "../../../channel/slack-render.js";
|
|
13
|
+
import { toContextReader } from "../../../context/container.js";
|
|
14
|
+
import { deserializeContext } from "../../../context/serialize.js";
|
|
13
15
|
/**
|
|
14
16
|
* Handles Slack interaction payloads (button clicks, select menus)
|
|
15
17
|
* arriving at the same webhook URL as Events API payloads.
|
|
@@ -25,20 +27,22 @@ export async function handleSlackInteraction(request, ctx, input) {
|
|
|
25
27
|
return new Response("ok", { status: 200 });
|
|
26
28
|
}
|
|
27
29
|
const ChannelClass = input.channelClass ?? SlackChannel;
|
|
28
|
-
const interactionCtx = {
|
|
29
|
-
channelId: interaction.channelId,
|
|
30
|
-
continuationToken: interaction.continuationToken,
|
|
31
|
-
messageTs: interaction.messageTs,
|
|
32
|
-
replaceCurrentMessage: async (renderable) => {
|
|
33
|
-
const kit = createSlackCardKit(input.chatModule);
|
|
34
|
-
await input.adapter.editMessage(interaction.continuationToken, interaction.messageTs, toSlackPostableMessage(renderable, kit));
|
|
35
|
-
},
|
|
36
|
-
deliverMessage: (message) => ({ message }),
|
|
37
|
-
resolveInputResponses: () => deriveInputResponsesFromInteraction(interaction),
|
|
38
|
-
threadTs: interaction.threadTs,
|
|
39
|
-
};
|
|
40
30
|
try {
|
|
41
|
-
const
|
|
31
|
+
const snapshot = await loadInteractionSnapshot(ctx, interaction);
|
|
32
|
+
const channel = rehydrateChannel(interaction, ChannelClass, snapshot);
|
|
33
|
+
const interactionCtx = {
|
|
34
|
+
channelId: interaction.channelId,
|
|
35
|
+
context: await loadInteractionContext(snapshot),
|
|
36
|
+
continuationToken: interaction.continuationToken,
|
|
37
|
+
messageTs: interaction.messageTs,
|
|
38
|
+
replaceCurrentMessage: async (renderable) => {
|
|
39
|
+
const kit = createSlackCardKit(input.chatModule);
|
|
40
|
+
await input.adapter.editMessage(interaction.continuationToken, interaction.messageTs, toSlackPostableMessage(renderable, kit));
|
|
41
|
+
},
|
|
42
|
+
deliverMessage: (message) => ({ message }),
|
|
43
|
+
resolveInputResponses: () => deriveInputResponsesFromInteraction(interaction),
|
|
44
|
+
threadTs: interaction.threadTs,
|
|
45
|
+
};
|
|
42
46
|
const delivery = await channel.onInteraction(interaction, interactionCtx);
|
|
43
47
|
if (delivery != null) {
|
|
44
48
|
await ctx.agent.deliver({
|
|
@@ -60,23 +64,29 @@ export async function handleSlackInteraction(request, ctx, input) {
|
|
|
60
64
|
* otherwise constructs a bare instance with minimal state so the default
|
|
61
65
|
* `onInteraction` HITL mapping can still run.
|
|
62
66
|
*/
|
|
63
|
-
|
|
67
|
+
function rehydrateChannel(interaction, ChannelClass, snapshot) {
|
|
68
|
+
if (snapshot !== null &&
|
|
69
|
+
snapshot.channel.kind === ChannelClass.kind &&
|
|
70
|
+
isSlackChannelSnapshotState(snapshot.channel.state)) {
|
|
71
|
+
return new ChannelClass(snapshot.channel.state);
|
|
72
|
+
}
|
|
73
|
+
return new ChannelClass({
|
|
74
|
+
serializedThread: { id: interaction.continuationToken },
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
async function loadInteractionSnapshot(ctx, interaction) {
|
|
64
78
|
try {
|
|
65
|
-
|
|
79
|
+
return await ctx.agent.getSessionSnapshot({
|
|
66
80
|
continuationToken: interaction.continuationToken,
|
|
67
81
|
});
|
|
68
|
-
if (snapshot !== null &&
|
|
69
|
-
snapshot.channel.kind === ChannelClass.kind &&
|
|
70
|
-
isSlackChannelSnapshotState(snapshot.channel.state)) {
|
|
71
|
-
return new ChannelClass(snapshot.channel.state);
|
|
72
|
-
}
|
|
73
82
|
}
|
|
74
|
-
catch {
|
|
75
|
-
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error("[ash] Failed to load Slack interaction snapshot.", error);
|
|
85
|
+
return null;
|
|
76
86
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
});
|
|
87
|
+
}
|
|
88
|
+
async function loadInteractionContext(snapshot) {
|
|
89
|
+
return toContextReader(await deserializeContext(snapshot?.context ?? {}));
|
|
80
90
|
}
|
|
81
91
|
function isSlackChannelSnapshotState(state) {
|
|
82
92
|
return typeof state.serializedThread === "object" && state.serializedThread !== null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack-interaction.js","sourceRoot":"","sources":["../../../../../src/public/channels/slack/slack-interaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,mCAAmC,EACnC,YAAY,GAEb,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"slack-interaction.js","sourceRoot":"","sources":["../../../../../src/public/channels/slack/slack-interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,7 +123,10 @@ pattern.
|
|
|
123
123
|
|
|
124
124
|
For richer Slack apps, `SlackChannel` also owns the Slack-specific authoring surface:
|
|
125
125
|
|
|
126
|
-
- `onInteraction(interaction, ctx)` handles custom `block_actions` inline
|
|
126
|
+
- `onInteraction(interaction, ctx)` handles custom `block_actions` inline or returns a delivery for
|
|
127
|
+
the parked session
|
|
128
|
+
- `ctx.context.get(...)` / `ctx.context.require(...)` reads the last committed durable authored
|
|
129
|
+
context for the parked session
|
|
127
130
|
- `getSlackThread()` exposes thread refresh, recent-message reads, and Slack-native posting through
|
|
128
131
|
Ash-owned types
|
|
129
132
|
- `ctx.replaceCurrentMessage(renderable)` edits the current Slack message during a handled
|
|
@@ -143,6 +146,9 @@ import {
|
|
|
143
146
|
type SlackInteractionContext,
|
|
144
147
|
type SlackRenderable,
|
|
145
148
|
} from "experimental-ash/channels/slack";
|
|
149
|
+
import { ContextKey } from "experimental-ash/context";
|
|
150
|
+
|
|
151
|
+
const SqlExpandedKey = new ContextKey<boolean>("app.sql_expanded");
|
|
146
152
|
|
|
147
153
|
class SqlSlackChannel extends SlackChannel<SlackChannelState> {
|
|
148
154
|
static override readonly kind = "sql-slack";
|
|
@@ -150,17 +156,23 @@ class SqlSlackChannel extends SlackChannel<SlackChannelState> {
|
|
|
150
156
|
override async onInteraction(
|
|
151
157
|
interaction: SlackInteraction,
|
|
152
158
|
ctx: SlackInteractionContext,
|
|
153
|
-
)
|
|
159
|
+
) {
|
|
154
160
|
const action = interaction.actions[0];
|
|
155
161
|
if (action?.actionId !== "toggle_sql_expand") {
|
|
156
|
-
return
|
|
162
|
+
return ctx.resolveInputResponses();
|
|
157
163
|
}
|
|
158
164
|
|
|
165
|
+
const previouslyExpanded = ctx.context.get(SqlExpandedKey) ?? false;
|
|
166
|
+
|
|
159
167
|
const nextCard: SlackRenderable = {
|
|
160
168
|
kind: "card",
|
|
161
169
|
fallbackText: "SQL expanded",
|
|
162
170
|
blocks: [
|
|
163
|
-
{
|
|
171
|
+
{
|
|
172
|
+
kind: "text",
|
|
173
|
+
style: "bold",
|
|
174
|
+
text: previouslyExpanded ? "SQL already expanded" : "SQL expanded",
|
|
175
|
+
},
|
|
164
176
|
{
|
|
165
177
|
kind: "actions",
|
|
166
178
|
actions: [
|
|
@@ -176,11 +188,11 @@ class SqlSlackChannel extends SlackChannel<SlackChannelState> {
|
|
|
176
188
|
};
|
|
177
189
|
|
|
178
190
|
await ctx.replaceCurrentMessage(nextCard);
|
|
179
|
-
return
|
|
191
|
+
return;
|
|
180
192
|
}
|
|
181
193
|
|
|
182
194
|
override async onDeliver(ctx, payload) {
|
|
183
|
-
ctx.set(
|
|
195
|
+
ctx.set(SqlExpandedKey, false);
|
|
184
196
|
return await super.onDeliver(ctx, payload);
|
|
185
197
|
}
|
|
186
198
|
}
|