@cuylabs/channel-slack 0.5.1 → 0.7.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 (66) hide show
  1. package/README.md +25 -136
  2. package/dist/app-home.d.ts +23 -0
  3. package/dist/app-home.js +40 -0
  4. package/dist/artifacts/index.d.ts +135 -0
  5. package/dist/artifacts/index.js +299 -0
  6. package/dist/{assistant.d.ts → assistant/index.d.ts} +1 -1
  7. package/dist/{assistant.js → assistant/index.js} +2 -2
  8. package/dist/auth/index.d.ts +56 -0
  9. package/dist/auth/index.js +168 -0
  10. package/dist/{chunk-IDVDMJ5U.js → chunk-6JSGIVQH.js} +110 -3
  11. package/dist/chunk-6WHFQUYQ.js +54 -0
  12. package/dist/{bolt.js → chunk-73QXT7MA.js} +25 -320
  13. package/dist/{chunk-CMR6B76C.js → chunk-DNVSH7H5.js} +407 -1
  14. package/dist/chunk-IRFKUPJN.js +235 -0
  15. package/dist/chunk-QJYCHWN6.js +76 -0
  16. package/dist/chunk-S3SWPYXJ.js +81 -0
  17. package/dist/{chunk-JZG4IETE.js → chunk-X4WBBBYM.js} +0 -52
  18. package/dist/core.js +5 -3
  19. package/dist/diagnostics/index.d.ts +71 -0
  20. package/dist/{diagnostics.js → diagnostics/index.js} +5 -1
  21. package/dist/entrypoints/index.d.ts +120 -0
  22. package/dist/entrypoints/index.js +132 -0
  23. package/dist/{feedback.js → feedback/index.js} +5 -7
  24. package/dist/{history.d.ts → history/index.d.ts} +2 -2
  25. package/dist/{history.js → history/index.js} +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.js +28 -15
  28. package/dist/{policy.d.ts → policy/index.d.ts} +103 -2
  29. package/dist/{policy.js → policy/index.js} +13 -1
  30. package/dist/runtime-BNBHOZSQ.d.ts +53 -0
  31. package/dist/{setup.d.ts → setup/index.d.ts} +30 -3
  32. package/dist/{setup.js → setup/index.js} +137 -3
  33. package/dist/transports/http/index.d.ts +68 -0
  34. package/dist/transports/http/index.js +8 -0
  35. package/dist/transports/index.d.ts +8 -0
  36. package/dist/transports/index.js +24 -0
  37. package/dist/transports/socket/index.d.ts +94 -0
  38. package/dist/transports/socket/index.js +19 -0
  39. package/dist/types-B9NfCVrk.d.ts +141 -0
  40. package/dist/views/index.d.ts +98 -0
  41. package/dist/views/index.js +22 -0
  42. package/docs/README.md +32 -0
  43. package/docs/concepts/activity.md +3 -3
  44. package/docs/concepts/artifacts.md +56 -0
  45. package/docs/concepts/entrypoints.md +73 -0
  46. package/docs/concepts/setup-requirements.md +23 -0
  47. package/docs/concepts/{bolt-runtime.md → transport-runtime.md} +9 -4
  48. package/docs/concepts/views.md +46 -0
  49. package/docs/recipes/generate-slack-manifest.md +16 -0
  50. package/docs/recipes/publish-artifact.md +45 -0
  51. package/docs/recipes/slash-command-and-shortcut.md +51 -0
  52. package/docs/recipes/socket-mode-app.md +1 -1
  53. package/docs/reference/channel-slack-boundary.md +10 -6
  54. package/docs/reference/exports.md +18 -12
  55. package/docs/reference/source-layout.md +36 -0
  56. package/package.json +68 -39
  57. package/dist/bolt.d.ts +0 -364
  58. package/dist/chunk-NE57BLLU.js +0 -0
  59. package/dist/diagnostics.d.ts +0 -22
  60. package/dist/shared.d.ts +0 -2
  61. package/dist/shared.js +0 -43
  62. /package/dist/{feedback.d.ts → feedback/index.d.ts} +0 -0
  63. /package/dist/{targets.d.ts → targets/index.d.ts} +0 -0
  64. /package/dist/{targets.js → targets/index.js} +0 -0
  65. /package/dist/{users.d.ts → users/index.d.ts} +0 -0
  66. /package/dist/{users.js → users/index.js} +0 -0
@@ -0,0 +1,46 @@
1
+ # Slack Views
2
+
3
+ `@cuylabs/channel-slack/views` provides Slack-runtime primitives for modal and
4
+ Home view workflows. It keeps Slack Web API and Bolt details in
5
+ `channel-slack` while product packages decide what a workflow means.
6
+
7
+ ```typescript
8
+ import {
9
+ encodeSlackViewPrivateMetadata,
10
+ openSlackModal,
11
+ registerSlackViewWorkflow,
12
+ } from "@cuylabs/channel-slack/views";
13
+
14
+ await openSlackModal({
15
+ client,
16
+ triggerId,
17
+ view: {
18
+ type: "modal",
19
+ callback_id: "incident_triage",
20
+ private_metadata: encodeSlackViewPrivateMetadata({
21
+ workflowId: "triage-123",
22
+ }),
23
+ title: { type: "plain_text", text: "Triage incident" },
24
+ submit: { type: "plain_text", text: "Continue" },
25
+ close: { type: "plain_text", text: "Cancel" },
26
+ blocks: [],
27
+ },
28
+ });
29
+
30
+ registerSlackViewWorkflow({
31
+ boltApp,
32
+ callbackId: "incident_triage",
33
+ onSubmission: async ({ metadata, view, actor }) => {
34
+ // Load product-owned workflow state by metadata.workflowId, validate
35
+ // view.state, then continue the workflow or return field errors.
36
+ return { response_action: "clear" };
37
+ },
38
+ });
39
+ ```
40
+
41
+ Use `private_metadata` for compact routing data such as a workflow id, request
42
+ id, or session id. Store durable workflow state outside the view, for example in
43
+ the application database or the existing interactive-request store.
44
+
45
+ The `views` setup feature does not require a special bot scope, but it does
46
+ require Slack interactivity to be enabled for the app.
@@ -9,6 +9,22 @@ const manifest = createSlackAppManifest({
9
9
  preset: "agent-app",
10
10
  transport: "socket",
11
11
  assistantDescription: "Ask the agent for help with workspace tasks.",
12
+ slashCommands: [
13
+ {
14
+ command: "/ask",
15
+ description: "Ask the agent",
16
+ usage_hint: "summarize this thread",
17
+ },
18
+ ],
19
+ shortcuts: [
20
+ {
21
+ type: "message",
22
+ name: "Summarize message",
23
+ callback_id: "summarize_message",
24
+ description: "Summarize the selected Slack message",
25
+ },
26
+ ],
27
+ features: ["artifacts", "canvas-artifacts"],
12
28
  });
13
29
 
14
30
  console.log(JSON.stringify(manifest, null, 2));
@@ -0,0 +1,45 @@
1
+ # Publish An Artifact
2
+
3
+ Use artifact helpers when a runtime produces a report, file, image, link, or
4
+ Canvas and the Slack adapter only needs to publish it.
5
+
6
+ ```typescript
7
+ import { publishSlackArtifact } from "@cuylabs/channel-slack/artifacts";
8
+
9
+ const result = await publishSlackArtifact({
10
+ client,
11
+ channelId: activity.channelId,
12
+ threadTs: activity.threadTs ?? activity.messageTs,
13
+ artifact: {
14
+ kind: "text",
15
+ title: "Launch summary",
16
+ summary: "Generated from the selected Slack thread.",
17
+ text: reportMarkdown,
18
+ },
19
+ });
20
+
21
+ logger.info("Slack artifact published", {
22
+ method: result.method,
23
+ fileId: result.fileId,
24
+ messageTs: result.messageTs,
25
+ canvasId: result.canvasId,
26
+ });
27
+ ```
28
+
29
+ To create a Canvas instead:
30
+
31
+ ```typescript
32
+ await publishSlackArtifact({
33
+ client,
34
+ channelId: activity.channelId,
35
+ artifact: {
36
+ kind: "canvas",
37
+ title: "Launch plan",
38
+ summary: "Generated plan",
39
+ markdown: canvasMarkdown,
40
+ },
41
+ });
42
+ ```
43
+
44
+ Enable the `artifacts` setup feature for files and messages. Enable
45
+ `canvas-artifacts` when publishing canvases.
@@ -0,0 +1,51 @@
1
+ # Slash Command And Shortcut Handler
2
+
3
+ Use entrypoint parsers to normalize Slack request payloads before handing them
4
+ to an application-owned runtime.
5
+
6
+ ```typescript
7
+ import {
8
+ parseSlackShortcutEntrypoint,
9
+ parseSlackSlashCommandEntrypoint,
10
+ } from "@cuylabs/channel-slack/entrypoints";
11
+
12
+ app.command("/ask", async ({ ack, body, client }) => {
13
+ await ack();
14
+
15
+ const entrypoint = parseSlackSlashCommandEntrypoint(body);
16
+ const answer = await runAgent({
17
+ input: entrypoint.activity.text,
18
+ slack: entrypoint.activity,
19
+ entrypoint,
20
+ });
21
+
22
+ await client.chat.postMessage({
23
+ channel: entrypoint.activity.channelId,
24
+ text: answer,
25
+ });
26
+ });
27
+
28
+ app.shortcut("summarize_message", async ({ ack, body, client }) => {
29
+ await ack();
30
+
31
+ const entrypoint = parseSlackShortcutEntrypoint(body);
32
+ if (entrypoint.kind !== "message-shortcut") return;
33
+
34
+ const answer = await runAgent({
35
+ input: entrypoint.selectedMessage.text,
36
+ slack: entrypoint.activity,
37
+ entrypoint,
38
+ });
39
+
40
+ await client.chat.postMessage({
41
+ channel: entrypoint.selectedMessage.channelId,
42
+ thread_ts:
43
+ entrypoint.selectedMessage.threadTs ??
44
+ entrypoint.selectedMessage.messageTs,
45
+ text: answer,
46
+ });
47
+ });
48
+ ```
49
+
50
+ For manifest setup, pass `slashCommands` and `shortcuts` to
51
+ `createSlackAppManifest`.
@@ -4,7 +4,7 @@
4
4
  import {
5
5
  createSlackSocketBoltApp,
6
6
  createSlackSocketModeRuntime,
7
- } from "@cuylabs/channel-slack/bolt";
7
+ } from "@cuylabs/channel-slack/transports/socket";
8
8
 
9
9
  const runtime = createSlackSocketModeRuntime({
10
10
  appSlug: "my-agent",
@@ -5,16 +5,19 @@ Slack events, formats Slack output, applies reusable admission and history
5
5
  policies, and provides Slack setup/runtime helpers. It does not create or run an
6
6
  agent.
7
7
 
8
- `@cuylabs/channel-slack-agent-core` is the agent-core runtime binding. It
9
- composes this package with runtime scopes, event streams, context fragments, and
10
- approval or human-input contracts.
8
+ Runtime-specific adapter packages compose these primitives with their own
9
+ runtime scopes, event streams, context fragments, and approval or human-input
10
+ contracts.
11
11
 
12
12
  ## In This Package
13
13
 
14
14
  - Slack activity parsing and text extraction.
15
+ - Slack slash command and shortcut entrypoint normalization.
16
+ - Slack artifact publishing contracts and helpers.
15
17
  - Markdown-to-Slack formatting.
16
18
  - Thread-aware session helpers.
17
- - Slack auth and installation store helpers.
19
+ - Slack auth and installation-store helpers.
20
+ - HTTP and Socket Mode Bolt transport helpers.
18
21
  - Socket Mode runtime guard, process lock, and optional Postgres advisory lock.
19
22
  - Setup requirements and manifest helpers.
20
23
  - Diagnostics.
@@ -29,6 +32,7 @@ approval or human-input contracts.
29
32
 
30
33
  - Agent runtime execution.
31
34
  - Agent-runtime scopes and context-fragment middleware.
35
+ - Runtime-specific mapping from Slack entrypoints into an agent turn.
32
36
  - Agent event stream rendering.
33
37
  - Agent-specific approval and human-input request contracts.
34
38
  - Product prompts, tools, audit policy, and deployment policy.
@@ -38,8 +42,8 @@ Those pieces belong in runtime-specific adapters or product applications.
38
42
  ## Behavior Notes
39
43
 
40
44
  - The root export is lightweight: `core`, `policy`, and `Logger`.
41
- - Peer-backed helpers live behind feature subpaths such as `bolt`, `history`,
42
- `setup`, `diagnostics`, and `users`.
45
+ - Peer-backed helpers live behind feature subpaths such as `transports`,
46
+ `app-home`, `history`, `setup`, `diagnostics`, and `users`.
43
47
  - Interactive request types are generic rather than derived from any
44
48
  agent-runtime event type.
45
49
  - Socket Mode logging uses this package's logger bridge rather than an agent
@@ -3,18 +3,24 @@
3
3
  Use feature subpaths for new code. They make dependency expectations clearer and
4
4
  keep application code close to the package boundary it uses.
5
5
 
6
- | Export | Depends on | Notes |
7
- | ------------------------------------ | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
8
- | `@cuylabs/channel-slack/core` | no Slack SDK runtime imports | Transport-neutral parsing, formatting, types, sessions, turn context |
9
- | `@cuylabs/channel-slack/shared` | no Slack SDK runtime imports | Compatibility alias for `core` |
10
- | `@cuylabs/channel-slack/policy` | `pg` only when using connection-string Postgres state | Message admission and in-memory/Postgres policy state |
11
- | `@cuylabs/channel-slack/history` | `@slack/web-api` types | History reader accepts a Slack WebClient or minimal conversations client |
12
- | `@cuylabs/channel-slack/bolt` | `@slack/bolt`, `express`; `pg` only when using connection-string Postgres locks | Bolt app factories and Socket Mode runtime helpers |
13
- | `@cuylabs/channel-slack/setup` | diagnostics only when inspecting live tokens | Setup requirements and app manifest helpers |
14
- | `@cuylabs/channel-slack/diagnostics` | `@slack/web-api` | Token, auth, and scope inspection |
15
- | `@cuylabs/channel-slack/users` | `@slack/web-api` when using default client | User profile lookup and mention enrichment |
16
- | `@cuylabs/channel-slack/targets` | no Slack SDK runtime imports unless resolving names through a client | Parse and resolve channel/user targets |
17
- | `@cuylabs/channel-slack/feedback` | `@slack/types` types | Feedback block and action helpers |
6
+ | Export | Depends on | Notes |
7
+ | ------------------------------------------ | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
8
+ | `@cuylabs/channel-slack/core` | no Slack SDK runtime imports | Transport-neutral parsing, formatting, types, sessions, turn context |
9
+ | `@cuylabs/channel-slack/policy` | `pg` only when using connection-string Postgres state | Message admission and in-memory/Postgres policy state |
10
+ | `@cuylabs/channel-slack/history` | `@slack/web-api` types | History reader accepts a Slack WebClient or minimal conversations client |
11
+ | `@cuylabs/channel-slack/app-home` | `@slack/bolt`, `@slack/types` | Slack App Home registration helper |
12
+ | `@cuylabs/channel-slack/artifacts` | no Slack SDK runtime imports; requires a Web API-like client at call time | Text, file, image, link, and Canvas artifact publishing |
13
+ | `@cuylabs/channel-slack/auth` | no Slack SDK runtime imports; `pg` is not required | Auth option types, auth resolution, OAuth installation stores |
14
+ | `@cuylabs/channel-slack/transports` | `@slack/bolt`, `express`; `pg` only when using connection-string Postgres locks | HTTP and Socket Mode transport helpers |
15
+ | `@cuylabs/channel-slack/transports/http` | `@slack/bolt`, `express` | HTTP Events API Bolt app factory |
16
+ | `@cuylabs/channel-slack/transports/socket` | `@slack/bolt`; `pg` only when using connection-string Postgres locks | Socket Mode app factory, runtime guard, process/Postgres locks |
17
+ | `@cuylabs/channel-slack/setup` | diagnostics only when inspecting live tokens | Setup requirements and app manifest helpers |
18
+ | `@cuylabs/channel-slack/diagnostics` | `@slack/web-api` | Token, auth, and scope inspection |
19
+ | `@cuylabs/channel-slack/entrypoints` | no Slack SDK runtime imports | Slash command and shortcut payload normalization |
20
+ | `@cuylabs/channel-slack/users` | `@slack/web-api` when using default client | User profile lookup and mention enrichment |
21
+ | `@cuylabs/channel-slack/targets` | no Slack SDK runtime imports unless resolving names through a client | Parse and resolve channel/user targets |
22
+ | `@cuylabs/channel-slack/feedback` | `@slack/types` types | Feedback block and action helpers |
23
+ | `@cuylabs/channel-slack/views` | `@slack/bolt`, `@slack/types` | Modal/Home view operations and workflow registration |
18
24
 
19
25
  The root export remains available for lightweight core and policy helpers:
20
26
 
@@ -0,0 +1,36 @@
1
+ # Source Layout
2
+
3
+ The package is organized by Slack capability. Public imports should use package
4
+ exports such as `@cuylabs/channel-slack/core` or
5
+ `@cuylabs/channel-slack/transports/socket`; application code should not import
6
+ from `src`.
7
+
8
+ ```text
9
+ src/
10
+ core.ts public core entrypoint
11
+ shared/ types, parsing, formatting, turn helpers
12
+ assistant/ Slack Assistant API helpers
13
+ app-home.ts Slack App Home registration helper
14
+ artifacts/ text, file, image, link, and Canvas publishing
15
+ auth/ auth options, auth resolution, installation stores
16
+ diagnostics/ token and scope inspection
17
+ entrypoints/ slash command and shortcut normalization
18
+ feedback/ feedback blocks and action parsing
19
+ history/
20
+ context/ turn-history loading component
21
+ reader.ts Slack history API reader and prompt formatter
22
+ visibility-policy.ts model-visible history filters
23
+ inclusion-policy.ts direct-message supplemental-history inclusion policy
24
+ policy/
25
+ message/ message admission and state-store component
26
+ setup/ scopes, events, manifests, setup inspection
27
+ transports/
28
+ http/ HTTP Events API Bolt app factory
29
+ socket/ Socket Mode Bolt app factory, runtime, locks
30
+ targets/ channel/user target parsing and resolution
31
+ users/ profile lookup and mention enrichment
32
+ views/ modal/Home view operations and workflow registration
33
+ ```
34
+
35
+ For public export details and peer dependency expectations, see
36
+ [Exports](exports.md).
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cuylabs/channel-slack",
3
- "version": "0.5.1",
4
- "description": "SDK-neutral Slack channel primitives for AI agents",
3
+ "version": "0.7.0",
4
+ "description": "Agent-runtime-agnostic Slack channel primitives for AI agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -12,14 +12,24 @@
12
12
  "default": "./dist/index.js"
13
13
  },
14
14
  "./assistant": {
15
- "types": "./dist/assistant.d.ts",
16
- "import": "./dist/assistant.js",
17
- "default": "./dist/assistant.js"
15
+ "types": "./dist/assistant/index.d.ts",
16
+ "import": "./dist/assistant/index.js",
17
+ "default": "./dist/assistant/index.js"
18
18
  },
19
- "./bolt": {
20
- "types": "./dist/bolt.d.ts",
21
- "import": "./dist/bolt.js",
22
- "default": "./dist/bolt.js"
19
+ "./app-home": {
20
+ "types": "./dist/app-home.d.ts",
21
+ "import": "./dist/app-home.js",
22
+ "default": "./dist/app-home.js"
23
+ },
24
+ "./artifacts": {
25
+ "types": "./dist/artifacts/index.d.ts",
26
+ "import": "./dist/artifacts/index.js",
27
+ "default": "./dist/artifacts/index.js"
28
+ },
29
+ "./auth": {
30
+ "types": "./dist/auth/index.d.ts",
31
+ "import": "./dist/auth/index.js",
32
+ "default": "./dist/auth/index.js"
23
33
  },
24
34
  "./core": {
25
35
  "types": "./dist/core.d.ts",
@@ -27,44 +37,64 @@
27
37
  "default": "./dist/core.js"
28
38
  },
29
39
  "./diagnostics": {
30
- "types": "./dist/diagnostics.d.ts",
31
- "import": "./dist/diagnostics.js",
32
- "default": "./dist/diagnostics.js"
40
+ "types": "./dist/diagnostics/index.d.ts",
41
+ "import": "./dist/diagnostics/index.js",
42
+ "default": "./dist/diagnostics/index.js"
43
+ },
44
+ "./entrypoints": {
45
+ "types": "./dist/entrypoints/index.d.ts",
46
+ "import": "./dist/entrypoints/index.js",
47
+ "default": "./dist/entrypoints/index.js"
33
48
  },
34
49
  "./feedback": {
35
- "types": "./dist/feedback.d.ts",
36
- "import": "./dist/feedback.js",
37
- "default": "./dist/feedback.js"
50
+ "types": "./dist/feedback/index.d.ts",
51
+ "import": "./dist/feedback/index.js",
52
+ "default": "./dist/feedback/index.js"
38
53
  },
39
54
  "./history": {
40
- "types": "./dist/history.d.ts",
41
- "import": "./dist/history.js",
42
- "default": "./dist/history.js"
55
+ "types": "./dist/history/index.d.ts",
56
+ "import": "./dist/history/index.js",
57
+ "default": "./dist/history/index.js"
43
58
  },
44
59
  "./policy": {
45
- "types": "./dist/policy.d.ts",
46
- "import": "./dist/policy.js",
47
- "default": "./dist/policy.js"
60
+ "types": "./dist/policy/index.d.ts",
61
+ "import": "./dist/policy/index.js",
62
+ "default": "./dist/policy/index.js"
48
63
  },
49
64
  "./setup": {
50
- "types": "./dist/setup.d.ts",
51
- "import": "./dist/setup.js",
52
- "default": "./dist/setup.js"
53
- },
54
- "./shared": {
55
- "types": "./dist/shared.d.ts",
56
- "import": "./dist/shared.js",
57
- "default": "./dist/shared.js"
65
+ "types": "./dist/setup/index.d.ts",
66
+ "import": "./dist/setup/index.js",
67
+ "default": "./dist/setup/index.js"
58
68
  },
59
69
  "./targets": {
60
- "types": "./dist/targets.d.ts",
61
- "import": "./dist/targets.js",
62
- "default": "./dist/targets.js"
70
+ "types": "./dist/targets/index.d.ts",
71
+ "import": "./dist/targets/index.js",
72
+ "default": "./dist/targets/index.js"
73
+ },
74
+ "./transports": {
75
+ "types": "./dist/transports/index.d.ts",
76
+ "import": "./dist/transports/index.js",
77
+ "default": "./dist/transports/index.js"
78
+ },
79
+ "./transports/http": {
80
+ "types": "./dist/transports/http/index.d.ts",
81
+ "import": "./dist/transports/http/index.js",
82
+ "default": "./dist/transports/http/index.js"
83
+ },
84
+ "./transports/socket": {
85
+ "types": "./dist/transports/socket/index.d.ts",
86
+ "import": "./dist/transports/socket/index.js",
87
+ "default": "./dist/transports/socket/index.js"
63
88
  },
64
89
  "./users": {
65
- "types": "./dist/users.d.ts",
66
- "import": "./dist/users.js",
67
- "default": "./dist/users.js"
90
+ "types": "./dist/users/index.d.ts",
91
+ "import": "./dist/users/index.js",
92
+ "default": "./dist/users/index.js"
93
+ },
94
+ "./views": {
95
+ "types": "./dist/views/index.d.ts",
96
+ "import": "./dist/views/index.js",
97
+ "default": "./dist/views/index.js"
68
98
  }
69
99
  },
70
100
  "files": [
@@ -108,8 +138,7 @@
108
138
  "agent",
109
139
  "slack",
110
140
  "channel",
111
- "adapter",
112
- "bolt"
141
+ "adapter"
113
142
  ],
114
143
  "license": "Apache-2.0",
115
144
  "publishConfig": {
@@ -119,9 +148,9 @@
119
148
  "node": ">=20"
120
149
  },
121
150
  "scripts": {
122
- "build": "tsup src/index.ts src/core.ts src/shared.ts src/assistant.ts src/bolt.ts src/diagnostics.ts src/feedback.ts src/history.ts src/policy.ts src/setup.ts src/targets.ts src/users.ts --format esm --dts --clean",
151
+ "build": "tsup src/index.ts src/app-home.ts src/artifacts/index.ts src/core.ts src/assistant/index.ts src/auth/index.ts src/diagnostics/index.ts src/entrypoints/index.ts src/feedback/index.ts src/history/index.ts src/policy/index.ts src/setup/index.ts src/targets/index.ts src/transports/index.ts src/transports/http/index.ts src/transports/socket/index.ts src/users/index.ts src/views/index.ts --format esm --dts --clean",
123
152
  "clean": "rm -rf dist",
124
- "dev": "tsup src/index.ts src/core.ts src/shared.ts src/assistant.ts src/bolt.ts src/diagnostics.ts src/feedback.ts src/history.ts src/policy.ts src/setup.ts src/targets.ts src/users.ts --format esm --dts --watch",
153
+ "dev": "tsup src/index.ts src/app-home.ts src/artifacts/index.ts src/core.ts src/assistant/index.ts src/auth/index.ts src/diagnostics/index.ts src/entrypoints/index.ts src/feedback/index.ts src/history/index.ts src/policy/index.ts src/setup/index.ts src/targets/index.ts src/transports/index.ts src/transports/http/index.ts src/transports/socket/index.ts src/users/index.ts src/views/index.ts --format esm --dts --watch",
125
154
  "lint": "eslint \"src/**/*.{ts,tsx}\" \"tests/**/*.{ts,tsx}\" --max-warnings=0",
126
155
  "test": "vitest run",
127
156
  "test:watch": "vitest",