@interactive-inc/claude-funnel 0.59.0 → 0.60.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 (85) hide show
  1. package/README.md +9 -3
  2. package/dist/bin.js +524 -449
  3. package/dist/channels-2g_BU1N0.d.ts +174 -0
  4. package/dist/claude.d.ts +9 -5
  5. package/dist/claude.js +54 -17
  6. package/dist/{diagnostic-log-Cb3v8P7p.d.ts → connector-descriptor-6SXJoszo.d.ts} +158 -2
  7. package/dist/connectors/discord.d.ts +30 -4
  8. package/dist/connectors/discord.js +2 -2
  9. package/dist/connectors/gh.d.ts +21 -5
  10. package/dist/connectors/gh.js +3 -3
  11. package/dist/connectors/schedule.d.ts +124 -2
  12. package/dist/connectors/schedule.js +3 -3
  13. package/dist/connectors/slack.d.ts +149 -5
  14. package/dist/connectors/slack.js +2 -2
  15. package/dist/{diagnostic-sql-reader-CzYgZpq2.js → diagnostic-sql-reader-C9zR-Csp.js} +5 -5
  16. package/dist/diagnostics.d.ts +1 -1
  17. package/dist/diagnostics.js +1 -1
  18. package/dist/{discord-listener-CKsZGTnH.js → discord-connector-BL36yvbL.js} +60 -37
  19. package/dist/docs.d.ts +1 -1
  20. package/dist/docs.js +1 -1
  21. package/dist/doctor.d.ts +1 -1
  22. package/dist/doctor.js +1 -1
  23. package/dist/error-message-of-Byi4y0Uf.js +9 -0
  24. package/dist/{file-process-guard-B3IFCj_G.d.ts → file-process-guard-DOlCr4GF.d.ts} +5 -6
  25. package/dist/{funnel-diagnostics-BpKYrMSu.js → funnel-diagnostics-CSiJmPlZ.js} +19 -2
  26. package/dist/{funnel-diagnostics-K-wON25Y.d.ts → funnel-diagnostics-DpXOsCty.d.ts} +3 -3
  27. package/dist/{funnel-docs-ng5K8w4j.js → funnel-docs-BxXZ9Ksx.js} +76 -3
  28. package/dist/{funnel-docs-DYBs1-H_.d.ts → funnel-docs-CNklHvbt.d.ts} +1 -1
  29. package/dist/{funnel-doctor-vxO96TCA.d.ts → funnel-doctor-CZf_0Luq.d.ts} +2 -2
  30. package/dist/{funnel-recovery-COExL9MD.d.ts → funnel-recovery-DnLrdWO9.d.ts} +1 -1
  31. package/dist/gateway/daemon.js +282 -209
  32. package/dist/gateway-base-url-Dy4Ykuoh.js +14 -0
  33. package/dist/gateway.d.ts +2 -2
  34. package/dist/gateway.js +2 -2
  35. package/dist/{gh-listener-Dsx6AmhH.js → gh-connector-DpiixfQZ.js} +53 -5
  36. package/dist/gh-connector-schema-Rzwc1c1N.js +12 -0
  37. package/dist/http-client-oICicjuO.d.ts +18 -0
  38. package/dist/index-CgY8NdMz.d.ts +1057 -0
  39. package/dist/index.d.ts +1558 -17
  40. package/dist/index.js +383 -342
  41. package/dist/{local-config-json-schema-DE1zkMcb.js → local-config-json-schema-JyLqOQNX.js} +9 -5
  42. package/dist/local-config-sync-Dh1Croqe.d.ts +169 -0
  43. package/dist/local-config.d.ts +2 -2
  44. package/dist/local-config.js +2 -2
  45. package/dist/logger.js +1 -1
  46. package/dist/{memory-diagnostic-log-5LzwJ_F7.js → memory-diagnostic-log-CI60kNfB.js} +33 -18
  47. package/dist/{memory-token-prompter-BlFwK9k7.d.ts → memory-token-prompter-B4sjyaAq.d.ts} +2 -2
  48. package/dist/{memory-token-prompter-C7vREzCL.js → memory-token-prompter-CZde7e6y.js} +1 -1
  49. package/dist/{node-file-system-BcrmWN9I.js → node-file-system-Blr8pAir.js} +1 -1
  50. package/dist/node-http-client-lowp60Oa.js +25 -0
  51. package/dist/{gh-connector-schema-DUcZgN2Q.js → node-process-runner-DxTvycoK.js} +35 -13
  52. package/dist/{profiles-g2qGVOWv.d.ts → profiles-Cy5wXQ0L.d.ts} +3 -3
  53. package/dist/{profiles-MnXvYfZF.js → profiles-DSzTeKQw.js} +1 -1
  54. package/dist/profiles.d.ts +1 -1
  55. package/dist/profiles.js +1 -1
  56. package/dist/recovery.d.ts +1 -1
  57. package/dist/recovery.js +1 -1
  58. package/dist/{schedule-listener-DP9Jhc6U.js → schedule-connector-L4uzg5M8.js} +109 -9
  59. package/dist/{settings-reader-DPwqOVUm.d.ts → settings-reader-BIFB_j2f.d.ts} +1 -1
  60. package/dist/settings-schema-D1xcOqRu.d.ts +78 -0
  61. package/dist/{gateway-base-url-6foMXfFf.js → settings-store-CUKSeTXC.js} +27 -29
  62. package/dist/{slack-listener-C4wlZaOq.js → slack-connector-DQIFPdBF.js} +67 -12
  63. package/dist/slot-fields-CMoRpwuy.js +45 -0
  64. package/dist/{yaml-render-C9Hhjk-0.js → yaml-render-qW34NlYz.js} +43 -10
  65. package/package.json +1 -1
  66. package/dist/connector-adapter-DGacCppE.d.ts +0 -25
  67. package/dist/discord-connector-schema-CQyfDkLD.d.ts +0 -39
  68. package/dist/gh-connector-schema-CZzwzvqY.d.ts +0 -14
  69. package/dist/index-Conbxl5O.d.ts +0 -3595
  70. package/dist/local-config-sync--f739oCJ.d.ts +0 -401
  71. package/dist/process-runner-Cx5O_fTf.d.ts +0 -49
  72. package/dist/resolve-connector-token-CczqG_Ig.js +0 -22
  73. package/dist/schedule-listener-DoMPjHZj.d.ts +0 -112
  74. package/dist/settings-schema-1hh11jnN.d.ts +0 -152
  75. package/dist/slack-listener-Dj9NFbAJ.d.ts +0 -136
  76. /package/dist/{connector-adapter-qwXLjQId.js → connector-adapter-DU9Rvyec.js} +0 -0
  77. /package/dist/{connector-listener-CpHBecCj.js → connector-listener-DR3aKOuK.js} +0 -0
  78. /package/dist/{file-system-PWKKU7lA.js → file-system-Wvzc2ePY.js} +0 -0
  79. /package/dist/{file-system-DxpnnUVb.d.ts → file-system-o51IsM0W.d.ts} +0 -0
  80. /package/dist/{funnel-doctor-CApCezTq.js → funnel-doctor-DiJCjHsg.js} +0 -0
  81. /package/dist/{funnel-log-sqlite-sink-B_5_4ybn.js → funnel-log-sqlite-sink-kqJbx2H7.js} +0 -0
  82. /package/dist/{funnel-recovery-D9CxD5Zs.js → funnel-recovery-BFdPjL6Z.js} +0 -0
  83. /package/dist/{logger-BP6SisKt.js → logger-B6iyNbxM.js} +0 -0
  84. /package/dist/{schedule-connector-schema-B_xO5z5B.js → schedule-connector-schema-CfyuMCMh.js} +0 -0
  85. /package/dist/{settings-reader-DPqrpV7s.js → settings-reader-CtQ-Ix8_.js} +0 -0
@@ -1,152 +0,0 @@
1
- import { z } from "zod";
2
-
3
- //#region lib/engine/settings/settings-schema.d.ts
4
- /**
5
- * Routing mode when multiple WS clients are subscribed to the same channel.
6
- *
7
- * - `fanout` (default): every connected client receives every event. Right when each
8
- * subscriber has its own job (e.g., TUI mirrors, distinct Claude profiles each running
9
- * their own pipeline against the same source).
10
- * - `exclusive`: each event is delivered to exactly one connected client, picked
11
- * round-robin per channel. Right when subscribers are interchangeable workers and you
12
- * want each event handled once. Tap=all clients (TUI dashboard) always receive,
13
- * regardless of mode, so they can passively observe.
14
- */
15
- declare const channelDeliveryModeSchema: z.ZodEnum<{
16
- fanout: "fanout";
17
- exclusive: "exclusive";
18
- }>;
19
- type ChannelDeliveryMode = z.infer<typeof channelDeliveryModeSchema>;
20
- declare const channelConfigSchema: z.ZodObject<{
21
- id: z.ZodString;
22
- name: z.ZodString;
23
- delivery: z.ZodDefault<z.ZodEnum<{
24
- fanout: "fanout";
25
- exclusive: "exclusive";
26
- }>>;
27
- connectors: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
28
- id: z.ZodString;
29
- name: z.ZodString;
30
- type: z.ZodLiteral<"slack">;
31
- botToken: z.ZodOptional<z.ZodString>;
32
- appToken: z.ZodOptional<z.ZodString>;
33
- botTokenEnv: z.ZodOptional<z.ZodString>;
34
- appTokenEnv: z.ZodOptional<z.ZodString>;
35
- minify: z.ZodDefault<z.ZodBoolean>;
36
- createdAt: z.ZodOptional<z.ZodString>;
37
- updatedAt: z.ZodOptional<z.ZodString>;
38
- }, z.core.$strip>, z.ZodObject<{
39
- id: z.ZodString;
40
- name: z.ZodString;
41
- type: z.ZodLiteral<"gh">;
42
- pollInterval: z.ZodOptional<z.ZodNumber>;
43
- createdAt: z.ZodOptional<z.ZodString>;
44
- updatedAt: z.ZodOptional<z.ZodString>;
45
- }, z.core.$strip>, z.ZodObject<{
46
- id: z.ZodString;
47
- name: z.ZodString;
48
- type: z.ZodLiteral<"discord">;
49
- botToken: z.ZodOptional<z.ZodString>;
50
- botTokenEnv: z.ZodOptional<z.ZodString>;
51
- createdAt: z.ZodOptional<z.ZodString>;
52
- updatedAt: z.ZodOptional<z.ZodString>;
53
- }, z.core.$strip>, z.ZodObject<{
54
- id: z.ZodString;
55
- name: z.ZodString;
56
- type: z.ZodLiteral<"schedule">;
57
- entries: z.ZodDefault<z.ZodArray<z.ZodObject<{
58
- id: z.ZodString;
59
- cron: z.ZodString;
60
- prompt: z.ZodString;
61
- enabled: z.ZodDefault<z.ZodBoolean>;
62
- catchupPolicy: z.ZodDefault<z.ZodEnum<{
63
- latest: "latest";
64
- all: "all";
65
- skip: "skip";
66
- }>>;
67
- }, z.core.$strip>>>;
68
- createdAt: z.ZodOptional<z.ZodString>;
69
- updatedAt: z.ZodOptional<z.ZodString>;
70
- }, z.core.$strip>], "type">>>;
71
- }, z.core.$strip>;
72
- type ChannelConfig = z.infer<typeof channelConfigSchema>;
73
- declare const profileConfigSchema: z.ZodObject<{
74
- id: z.ZodString;
75
- name: z.ZodString;
76
- path: z.ZodString;
77
- channelId: z.ZodString;
78
- options: z.ZodDefault<z.ZodArray<z.ZodString>>;
79
- env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
80
- resume: z.ZodDefault<z.ZodBoolean>;
81
- sessionId: z.ZodOptional<z.ZodString>;
82
- }, z.core.$strip>;
83
- type ProfileConfig = z.infer<typeof profileConfigSchema>;
84
- declare const SETTINGS_VERSION = 1;
85
- declare const settingsSchema: z.ZodObject<{
86
- version: z.ZodDefault<z.ZodLiteral<1>>;
87
- channels: z.ZodDefault<z.ZodArray<z.ZodObject<{
88
- id: z.ZodString;
89
- name: z.ZodString;
90
- delivery: z.ZodDefault<z.ZodEnum<{
91
- fanout: "fanout";
92
- exclusive: "exclusive";
93
- }>>;
94
- connectors: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
95
- id: z.ZodString;
96
- name: z.ZodString;
97
- type: z.ZodLiteral<"slack">;
98
- botToken: z.ZodOptional<z.ZodString>;
99
- appToken: z.ZodOptional<z.ZodString>;
100
- botTokenEnv: z.ZodOptional<z.ZodString>;
101
- appTokenEnv: z.ZodOptional<z.ZodString>;
102
- minify: z.ZodDefault<z.ZodBoolean>;
103
- createdAt: z.ZodOptional<z.ZodString>;
104
- updatedAt: z.ZodOptional<z.ZodString>;
105
- }, z.core.$strip>, z.ZodObject<{
106
- id: z.ZodString;
107
- name: z.ZodString;
108
- type: z.ZodLiteral<"gh">;
109
- pollInterval: z.ZodOptional<z.ZodNumber>;
110
- createdAt: z.ZodOptional<z.ZodString>;
111
- updatedAt: z.ZodOptional<z.ZodString>;
112
- }, z.core.$strip>, z.ZodObject<{
113
- id: z.ZodString;
114
- name: z.ZodString;
115
- type: z.ZodLiteral<"discord">;
116
- botToken: z.ZodOptional<z.ZodString>;
117
- botTokenEnv: z.ZodOptional<z.ZodString>;
118
- createdAt: z.ZodOptional<z.ZodString>;
119
- updatedAt: z.ZodOptional<z.ZodString>;
120
- }, z.core.$strip>, z.ZodObject<{
121
- id: z.ZodString;
122
- name: z.ZodString;
123
- type: z.ZodLiteral<"schedule">;
124
- entries: z.ZodDefault<z.ZodArray<z.ZodObject<{
125
- id: z.ZodString;
126
- cron: z.ZodString;
127
- prompt: z.ZodString;
128
- enabled: z.ZodDefault<z.ZodBoolean>;
129
- catchupPolicy: z.ZodDefault<z.ZodEnum<{
130
- latest: "latest";
131
- all: "all";
132
- skip: "skip";
133
- }>>;
134
- }, z.core.$strip>>>;
135
- createdAt: z.ZodOptional<z.ZodString>;
136
- updatedAt: z.ZodOptional<z.ZodString>;
137
- }, z.core.$strip>], "type">>>;
138
- }, z.core.$strip>>>;
139
- profiles: z.ZodDefault<z.ZodArray<z.ZodObject<{
140
- id: z.ZodString;
141
- name: z.ZodString;
142
- path: z.ZodString;
143
- channelId: z.ZodString;
144
- options: z.ZodDefault<z.ZodArray<z.ZodString>>;
145
- env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
146
- resume: z.ZodDefault<z.ZodBoolean>;
147
- sessionId: z.ZodOptional<z.ZodString>;
148
- }, z.core.$strip>>>;
149
- }, z.core.$strip>;
150
- type Settings = z.infer<typeof settingsSchema>;
151
- //#endregion
152
- export { Settings as a, profileConfigSchema as c, SETTINGS_VERSION as i, settingsSchema as l, ChannelDeliveryMode as n, channelConfigSchema as o, ProfileConfig as r, channelDeliveryModeSchema as s, ChannelConfig as t };
@@ -1,136 +0,0 @@
1
- import { S as FunnelLogger, b as FunnelConnectorListener, o as ConnectorDiagnosticLog, x as NotifyFn } from "./diagnostic-log-Cb3v8P7p.js";
2
- import { z } from "zod";
3
- import { App } from "@slack/bolt";
4
-
5
- //#region lib/engine/connectors/slack-event-types.d.ts
6
- type SlackMessageEvent = {
7
- kind: "message";
8
- channel: string;
9
- user: string;
10
- rawText: string;
11
- text: string;
12
- threadTs: string;
13
- ts: string;
14
- isThreadRoot: boolean;
15
- mentioned: boolean;
16
- source: "app_mention" | "message";
17
- };
18
- type SlackReactionEvent = {
19
- kind: "reaction_added" | "reaction_removed";
20
- channel: string;
21
- user: string;
22
- emoji: string;
23
- targetTs: string;
24
- targetUser: string | null;
25
- };
26
- type SlackEvent = SlackMessageEvent | SlackReactionEvent;
27
- //#endregion
28
- //#region lib/engine/connectors/slack-event-processor.d.ts
29
- type SlackRawEvent = Record<string, unknown>;
30
- /**
31
- * Why the processor dropped an event. Mirrored verbatim into the diagnostic
32
- * log's processed `outcome` column so "Slack delivered it but no notification arrived" is
33
- * traceable to the exact gate that dropped it. The listener may additionally
34
- * record `skip:preprocess` for events a host preprocessor dropped before the
35
- * processor ran — that gate is outside this type.
36
- */
37
- type SlackSkipReason = "skip:type" | "skip:subtype" | "skip:dedup" | "skip:self-user" | "skip:self-bot";
38
- type SlackProcessedSkip = {
39
- skip: true;
40
- reason: SlackSkipReason;
41
- };
42
- type SlackProcessedEmit = {
43
- skip: false;
44
- event: SlackEvent;
45
- content: string;
46
- meta: Record<string, string>;
47
- shouldReact: boolean;
48
- channel: string;
49
- timestamp: string;
50
- };
51
- type SlackProcessed = SlackProcessedSkip | SlackProcessedEmit;
52
- type Props = {
53
- ownBotUserId: string;
54
- ownBotId: string;
55
- minify?: boolean;
56
- now?: () => number;
57
- };
58
- declare class FunnelSlackEventProcessor {
59
- private readonly ownBotUserId;
60
- private readonly ownBotId;
61
- private readonly minify;
62
- private readonly now;
63
- private readonly dedup;
64
- constructor(props: Props);
65
- process(event: SlackRawEvent): SlackProcessed;
66
- }
67
- //#endregion
68
- //#region lib/engine/connectors/slack-connector-schema.d.ts
69
- /**
70
- * A slack connector resolves its tokens one of two ways, set at sync time:
71
- *
72
- * - literal: `botToken` / `appToken` hold the real `xoxb-`/`xapp-` secret
73
- * (set by a `fnl channels` command or a TTY prompt at launch).
74
- * - by reference: `botTokenEnv` / `appTokenEnv` hold the *name* of an env var.
75
- * The secret never lands in settings.json; the listener resolves it from
76
- * `process.env` at start. This form is only set through the engine API
77
- * (`new Funnel(...)`) — funnel.json and the `fnl` CLI produce literals.
78
- *
79
- * Both are optional at the schema level (a discriminated-union member can't
80
- * carry a cross-field refine); the listener requires exactly one resolved
81
- * token per slot and errors loudly otherwise.
82
- */
83
- declare const slackConnectorSchema: z.ZodObject<{
84
- id: z.ZodString;
85
- name: z.ZodString;
86
- type: z.ZodLiteral<"slack">;
87
- botToken: z.ZodOptional<z.ZodString>;
88
- appToken: z.ZodOptional<z.ZodString>;
89
- botTokenEnv: z.ZodOptional<z.ZodString>;
90
- appTokenEnv: z.ZodOptional<z.ZodString>;
91
- minify: z.ZodDefault<z.ZodBoolean>;
92
- createdAt: z.ZodOptional<z.ZodString>;
93
- updatedAt: z.ZodOptional<z.ZodString>;
94
- }, z.core.$strip>;
95
- type SlackConnectorConfig = z.infer<typeof slackConnectorSchema>;
96
- //#endregion
97
- //#region lib/engine/connectors/slack-listener.d.ts
98
- type SlackOnAppCreated = (app: App) => void | Promise<void>;
99
- type SlackPreprocessEvent = (event: SlackRawEvent) => SlackRawEvent | null;
100
- type Deps = {
101
- config: SlackConnectorConfig; /** Funnel channel uuid this connector lives under; stamped onto diagnostic-log rows. */
102
- channelId?: string; /** Environment used to resolve `botTokenEnv`/`appTokenEnv` references. Defaults to process.env. */
103
- env?: NodeJS.ProcessEnv;
104
- logger?: FunnelLogger; /** Diagnostic log of inbound events, before and after processing. No-op when absent. */
105
- diagnosticLog?: ConnectorDiagnosticLog;
106
- /**
107
- * Invoked after the Bolt App is constructed, before it starts.
108
- * Use to attach app.action handlers, custom middleware, etc.
109
- */
110
- onAppCreated?: SlackOnAppCreated;
111
- /**
112
- * Transform or drop the raw Slack event before the built-in processor sees it.
113
- * Return null to drop the event entirely.
114
- */
115
- preprocessEvent?: SlackPreprocessEvent;
116
- };
117
- declare class FunnelSlackListener extends FunnelConnectorListener {
118
- private readonly config;
119
- private readonly channelId;
120
- private readonly env;
121
- private readonly logger;
122
- private readonly diagnosticLog;
123
- private readonly onAppCreated;
124
- private readonly preprocessEvent;
125
- private app;
126
- private connected;
127
- constructor(deps: Deps);
128
- start(notify: NotifyFn): Promise<void>;
129
- stop(): Promise<void>;
130
- isAlive(): boolean;
131
- private recordRaw;
132
- private recordProcessed;
133
- private recordConnection;
134
- }
135
- //#endregion
136
- export { slackConnectorSchema as a, SlackProcessedEmit as c, SlackSkipReason as d, SlackEvent as f, SlackConnectorConfig as i, SlackProcessedSkip as l, SlackReactionEvent as m, SlackOnAppCreated as n, FunnelSlackEventProcessor as o, SlackMessageEvent as p, SlackPreprocessEvent as r, SlackProcessed as s, FunnelSlackListener as t, SlackRawEvent as u };
File without changes