@interactive-inc/claude-funnel 0.66.0 → 0.68.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/README.md +31 -6
- package/dist/bin.js +292 -383
- package/dist/channel.d.ts +76 -52
- package/dist/channel.js +82 -47
- package/dist/{channels-DR90RmUP.d.ts → channels-B0cifCfw.d.ts} +6 -6
- package/dist/claude.d.ts +11 -8
- package/dist/claude.js +31 -15
- package/dist/connector-descriptor-D4XtEsH8.d.ts +215 -0
- package/dist/{connector-diagnostics-recorder-COtNEmUp.js → connector-diagnostics-recorder-BmOijU1p.js} +1 -0
- package/dist/connectors/discord.d.ts +11 -8
- package/dist/connectors/discord.js +2 -2
- package/dist/connectors/gh.d.ts +7 -6
- package/dist/connectors/gh.js +2 -2
- package/dist/connectors/schedule.d.ts +21 -17
- package/dist/connectors/schedule.js +3 -3
- package/dist/connectors/slack.d.ts +15 -10
- package/dist/connectors/slack.js +3 -3
- package/dist/diagnostic-event-CxMM5Bl2.js +78 -0
- package/dist/diagnostic-log-BsAg5qZK.d.ts +186 -0
- package/dist/diagnostics.d.ts +2 -2
- package/dist/diagnostics.js +3 -2
- package/dist/{discord-connector-DXARcO6w.js → discord-connector-CAcWifJn.js} +6 -6
- package/dist/{discord-connector-schema-D1dyxhXk.d.ts → discord-connector-schema-BaBZYHxK.d.ts} +0 -1
- package/dist/docs.d.ts +1 -1
- package/dist/docs.js +1 -1
- package/dist/doctor.d.ts +1 -1
- package/dist/doctor.js +1 -1
- package/dist/event-log.d.ts +2 -0
- package/dist/event-log.js +3 -0
- package/dist/{file-process-guard-CiBwXjzm.d.ts → file-process-guard-D-QatrwL.d.ts} +22 -18
- package/dist/{file-system-DHgbuTFb.d.ts → file-system-BNtl997T.d.ts} +2 -1
- package/dist/{flume-source-listener-FzR5lGpL.d.ts → flume-source-listener-Ba8_1Mg-.d.ts} +9 -6
- package/dist/{funnel-diagnostics-Cvk6Sk4x.js → funnel-diagnostics-CAG7hJP0.js} +85 -141
- package/dist/{funnel-diagnostics-kbd27d7I.d.ts → funnel-diagnostics-CDrZznTB.d.ts} +18 -18
- package/dist/{funnel-docs-C-ge0MuB.js → funnel-docs-CI4hMkhq.js} +12 -3
- package/dist/{funnel-doctor-CVTNUtDn.d.ts → funnel-doctor-CY4S5cnz.d.ts} +20 -9
- package/dist/{funnel-doctor-XrI2GBH8.js → funnel-doctor-Csw5qjcH.js} +1 -0
- package/dist/{funnel-error-0t1MK1R6.js → funnel-error-DoSBCogD.js} +13 -0
- package/dist/{funnel-recovery-D8MkiTpk.d.ts → funnel-recovery-BwcSNNSN.d.ts} +1 -2
- package/dist/{funnel-recovery-DKnEutUS.js → funnel-recovery-DYbSYGWC.js} +1 -0
- package/dist/gateway/daemon.js +60 -139
- package/dist/gateway.d.ts +2 -3
- package/dist/gateway.js +2 -2
- package/dist/{gh-connector-BUGCOEWS.js → gh-connector-DMwI6zJA.js} +5 -5
- package/dist/{gh-connector-schema-BCHEqpUg.d.ts → gh-connector-schema-BrNsCl1T.d.ts} +0 -1
- package/dist/{index-BU1TtuFy.d.ts → index-fHrKn4jm.d.ts} +210 -40
- package/dist/index.d.ts +125 -115
- package/dist/index.js +242 -57
- package/dist/{local-config-json-schema-DexV8vX3.js → local-config-json-schema-_-YVHX4c.js} +4 -4
- package/dist/local-config.d.ts +2 -3
- package/dist/local-config.js +1 -1
- package/dist/logger.d.ts +17 -265
- package/dist/logger.js +6 -141
- package/dist/memory-event-log-BY8XjFzi.js +147 -0
- package/dist/{memory-token-prompter-D0kIdhar.d.ts → memory-token-prompter-B20tl_aU.d.ts} +2 -3
- package/dist/{node-file-system-BOXIHW_Q.js → node-file-system-xJx7dymE.js} +11 -3
- package/dist/{profiles-M24JrcOh.d.ts → profiles-CePRnv3F.d.ts} +3 -4
- package/dist/{profiles-ZHLONml4.js → profiles-KpN7_gBw.js} +19 -5
- package/dist/profiles.d.ts +1 -1
- package/dist/profiles.js +1 -1
- package/dist/recovery.d.ts +1 -1
- package/dist/recovery.js +1 -1
- package/dist/{schedule-connector-9k3gOIgl.js → schedule-connector-BXUOYgwZ.js} +63 -99
- package/dist/schedule-connector-schema-CNV8PgWX.js +137 -0
- package/dist/schedule-connector-schema-Tq5kJul-.d.ts +127 -0
- package/dist/{settings-reader-BnKIbmsD.d.ts → settings-reader-CyTpbAre.d.ts} +1 -2
- package/dist/{settings-schema-IShSMm5G.d.ts → settings-schema-B-CKLuST.d.ts} +0 -1
- package/dist/{settings-store-ccv291GV.js → settings-store-ZFWBhOnp.js} +12 -3
- package/dist/{slack-connector-CxpWagbT.js → slack-connector-CC3V2VXQ.js} +10 -9
- package/dist/{slack-event-processor-xFDG3US0.js → slack-event-processor-Cs_YuI3w.js} +2 -2
- package/dist/{slack-event-processor-BDTr62cN.d.ts → slack-event-processor-DmAlq4cV.d.ts} +0 -1
- package/dist/{slot-fields-D-pvMgTK.js → slot-fields-eCWizJqS.js} +4 -4
- package/dist/{sqlite-diagnostic-log-CwhXE9Qh.js → sqlite-diagnostic-log-Qs4cf9I_.js} +92 -100
- package/dist/sqlite-event-log-BYgCFMxC.d.ts +284 -0
- package/dist/{funnel-log-sqlite-sink-DLYkY0pZ.js → sqlite-event-log-eZuXKszJ.js} +53 -12
- package/dist/{yaml-render-DVEtYuF1.js → yaml-render-DxxRQT-V.js} +3 -3
- package/package.json +25 -10
- package/dist/broadcaster-DVNcw00K.d.ts +0 -138
- package/dist/connector-descriptor-CmyHlEiT.d.ts +0 -380
- package/dist/diagnostic-sql-reader-oXZnWFf_.js +0 -83
- package/dist/file-system-Wvzc2ePY.js +0 -9
- package/dist/logger-B6iyNbxM.js +0 -9
- package/dist/schedule-connector-schema-D7ZEKvit.d.ts +0 -49
- package/dist/schedule-connector-schema-DKEPZnVv.js +0 -31
- package/dist/settings-reader-9FcX3qS1.js +0 -11
- /package/dist/{connector-adapter-Dvs8N7ew.js → connector-adapter-BL2ehMej.js} +0 -0
- /package/dist/{connector-listener-mPGZYa8e.js → connector-listener-BcQMzY6Q.js} +0 -0
- /package/dist/{discord-connector-schema-B4YpWpR3.js → discord-connector-schema-saAGuPmJ.js} +0 -0
- /package/dist/{error-message-of-ColuYmAk.js → error-message-of-BG4ezZ_s.js} +0 -0
- /package/dist/{funnel-docs-Cd66sKyV.d.ts → funnel-docs-BJWawfWI.d.ts} +0 -0
- /package/dist/{gh-connector-schema-CAqIhzGr.js → gh-connector-schema-DmZTrzUu.js} +0 -0
- /package/dist/{logger-Bc_Ooypb.d.ts → logger-mMZvblTx.d.ts} +0 -0
- /package/dist/{loopback-fetch-CVNuN3YZ.js → loopback-fetch-HP-bo9Kv.js} +0 -0
- /package/dist/{node-http-client-u00atiKx.js → node-http-client-SX3xFh4h.js} +0 -0
- /package/dist/{node-process-runner-DxTvycoK.js → node-process-runner-D4rzPl8Q.js} +0 -0
- /package/dist/{resolve-connector-token-DxDG9mhf.js → resolve-connector-token-BwiJCu82.js} +0 -0
- /package/dist/{slack-connector-schema-Dem8to4P.js → slack-connector-schema-EGVuuqSX.js} +0 -0
package/README.md
CHANGED
|
@@ -97,7 +97,7 @@ profiles は起動レシピ。各プロファイルは一意な `name` を持ち
|
|
|
97
97
|
|
|
98
98
|
`funnel.json` に書けないものが 2 つある。delivery モード(fanout / exclusive)は CLI で設定する(`funnel.json` のチャネルは fanout 固定)。schedule の cron エントリも CLI で足す(`funnel.json` には schedule コネクタの存在だけ宣言できる)。
|
|
99
99
|
|
|
100
|
-
セッション再開には `resume` の明示が要る。`funnel.json` の `resume` はデフォルト値を持たず、書かないと再開されない(未指定が false 扱いになる)。前回の claude セッションを引き継ぎたいなら必ず `"resume": true` を書く。再開のための session id は funnel が `~/.funnel/projects/<id>/
|
|
100
|
+
セッション再開には `resume` の明示が要る。`funnel.json` の `resume` はデフォルト値を持たず、書かないと再開されない(未指定が false 扱いになる)。前回の claude セッションを引き継ぎたいなら必ず `"resume": true` を書く。再開のための session id は funnel が `~/.funnel/projects/<id>/claude/local-sessions.json` に自動で保存・読み出しするので、`funnel.json` には書かない。
|
|
101
101
|
|
|
102
102
|
### 使い方
|
|
103
103
|
|
|
@@ -116,9 +116,13 @@ cron 起動を足す(schedule コネクタを宣言したうえで、エント
|
|
|
116
116
|
bunx fnl channels ops connectors add daily --type=schedule
|
|
117
117
|
bunx fnl channels ops connectors daily schedules add morning \
|
|
118
118
|
--cron="0 9 * * *" --prompt="morning standup"
|
|
119
|
+
bunx fnl channels ops connectors daily schedules add release \
|
|
120
|
+
--run-at="2026-08-01T09:00:00+09:00" --prompt="release check"
|
|
119
121
|
```
|
|
120
122
|
|
|
121
|
-
tick
|
|
123
|
+
cron は一致する tick ごと、一回実行は `run-at` 以降の最初の tick でプロンプトを発火する。発火済みの一回実行は state に記録されるため、設定削除の hook が失敗しても再発火しない。デーモン停止中に逃した枠は次回起動時に catch-up する(`meta.catchup = "true"`。cron の探索は最大 24 時間)。
|
|
124
|
+
|
|
125
|
+
cron は標準の 5 フィールド規則に従う。day-of-month と day-of-week を両方限定した場合は OR、日曜は `0` と `7` の両方を受け付ける。不正な式は登録時に拒否される。
|
|
122
126
|
|
|
123
127
|
`funnel.json` を持つリポジトリは自分自身にスコープされる。初回起動時に funnel は `funnel.json` の先頭へ不変の `id`(uuid) を書き戻し、以降このリポジトリの funnel state を `~/.funnel/projects/<id>/` 配下に隔離する。グローバルの `~/.funnel` には一切触らない(イベントログと一時ファイルだけが `/tmp/funnel/` で共有)。このスコープはリポジトリ内で実行する全 CLI コマンドに効く。
|
|
124
128
|
|
|
@@ -300,7 +304,8 @@ Settings = { channels[], profiles[] } → ~/.funnel/settings.j
|
|
|
300
304
|
├── gateway.pid デーモン PID
|
|
301
305
|
├── gateway.token デーモン HTTP / WS の Bearer token
|
|
302
306
|
├── claude/
|
|
303
|
-
│
|
|
307
|
+
│ ├── <profile-id>.pid 同一プロファイルの二重起動を防ぐ(profile id がキー)
|
|
308
|
+
│ └── local-sessions.json funnel.json profile の再開用 session id
|
|
304
309
|
└── channels/
|
|
305
310
|
└── <channel-id>/
|
|
306
311
|
└── connectors/
|
|
@@ -308,7 +313,7 @@ Settings = { channels[], profiles[] } → ~/.funnel/settings.j
|
|
|
308
313
|
└── state.json コネクタごとの永続 state(例: schedule の lastFiredAt)
|
|
309
314
|
|
|
310
315
|
/tmp/funnel/
|
|
311
|
-
├── events
|
|
316
|
+
├── events/<scope>.db dir + port ごとに分離した offset 再生ログ
|
|
312
317
|
├── funnel.log 診断ログ(デーモンの起動、listener boot、接続)
|
|
313
318
|
└── gateway.log デーモンの stdout/stderr
|
|
314
319
|
```
|
|
@@ -400,7 +405,7 @@ const base = gatewayLoopbackUrl(9743) // → http://127.0.0.1:9743
|
|
|
400
405
|
```
|
|
401
406
|
|
|
402
407
|
- 非ループバック bind(`gatewayServer({ hostname: "0.0.0.0" })`)は token 無しだと `start()` が throw する。前段で自前認証する場合のみ `allowInsecureHost: true`
|
|
403
|
-
- コネクタの token は `botToken` か `botTokenEnv` の片方だけ(両方同時はコンパイルエラー)、event store は `dbPath` か `eventLog` の片方だけ、launch の `resume` は `profileId` がある時だけ指定できる
|
|
408
|
+
- コネクタの token は `botToken` か `botTokenEnv` の片方だけ(両方同時はコンパイルエラー)、event store は `dbPath` か `eventLog` の片方だけ、launch の `resume` は stable な `profileId` がある時だけ指定できる
|
|
404
409
|
|
|
405
410
|
### サブエントリ
|
|
406
411
|
|
|
@@ -418,9 +423,29 @@ import { FunnelLocalConfig } from "@interactive-inc/claude-funnel/local-config"
|
|
|
418
423
|
|
|
419
424
|
// コネクタの descriptor とスキーマ(Slack / Discord / GitHub / Schedule)
|
|
420
425
|
// descriptor(slackConnector 等)を new Funnel({ connectors: [...] }) に渡す
|
|
421
|
-
import {
|
|
426
|
+
import {
|
|
427
|
+
slackConnector,
|
|
428
|
+
slackConnectorSchema,
|
|
429
|
+
} from "@interactive-inc/claude-funnel/connectors/slack"
|
|
430
|
+
|
|
431
|
+
// Channel manifest(flume sources を broadcaster に流す宣言的 channel。ConnectorDescriptor 系とは独立)
|
|
432
|
+
import {
|
|
433
|
+
FunnelChannelSupervisor,
|
|
434
|
+
timeChannel,
|
|
435
|
+
defineChannel,
|
|
436
|
+
} from "@interactive-inc/claude-funnel/channel"
|
|
422
437
|
```
|
|
423
438
|
|
|
439
|
+
汎用のstructured event logは製品APIから独立したサブエントリです。
|
|
440
|
+
新しいコードではこちらを使います。
|
|
441
|
+
|
|
442
|
+
```ts
|
|
443
|
+
import { EventLog, MemoryEventLog } from "@interactive-inc/claude-funnel/event-log"
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
既存の `@interactive-inc/claude-funnel/logger` と `FunnelLog` 系は互換性のため
|
|
447
|
+
維持しています。text diagnostic logも引き続きloggerサブエントリにあります。
|
|
448
|
+
|
|
424
449
|
### テスト用のサンドボックス
|
|
425
450
|
|
|
426
451
|
`Funnel.inMemory()` は全 IO 境界(ディスク / プロセス / clock / UUID)を Memory 実装で配線済みの Funnel を返す。`props` の任意の部分集合で個々の seam を上書きできるので、実 FS や spawn に触れずにテストを書ける。
|